"Преобразование в формат Далвик Ошибка 1" на внешнюю банку


в моем приложении для Android в Eclipse я получаю следующую ошибку.

НЕОЖИДАННОЕ ИСКЛЮЧЕНИЕ ВЕРХНЕГО УРОВНЯ:
Ява.ленг.IllegalArgumentException: уже добавлено: Lorg/xmlpull / v1 / XmlPullParser;
....
Преобразование в формат Далвик Ошибка 1

эта ошибка появляется только при добавлении определенного внешнего файла JAR в мой проект. Я долго искал возможное решение, но ни одно из возможных решения работают. Я даже попытался перейти на Android 1.6 вместо 1.5 (текущая версия, которую я использую).

30 884

30 ответов:

перейдите в проект "свойства" Java Build Path " библиотеки и удалите все, кроме "Android X. Y" (в моем случае Android 1.5). нажимать OK. Перейдите в проект "очистить" чистые проекты, выбранные ниже " выберите свой проект и нажмите кнопку ОК. Это должно сработать.

также возможно, что у вас есть файл JAR, расположенный где-то в ваших папках проекта (Я скопировал файл Admob JAR в свою папку src), а затем добавил его в качестве библиотеки путей Java. Он не отображается в Обозревателе пакетов, таким образом, вы не замечаете этого, но он подсчитывается дважды, вызывая страшную ошибку Dalvik 1.

еще одной возможной причиной могут быть конфликты имен пакетов. Предположим, у вас есть пакет com.abc.xyz и класс с именем A.java внутри этого пакета и другого проекта библиотеки (который добавляется к зависимости этого проекта), который содержит тот же com.abc.xyz.A.java, то вы получите точно такую же ошибку. Это означает, что у вас есть несколько ссылок на один и тот же файл A.java и не могу правильно построить его.

другими способами это может произойти, если вы случайно или сознательно редактируете / добавляете любую вещь в файл пути к классу вручную.в некоторых случаях мы можем добавить android.фляги путь вручную путь к классу файл для генерации документации.При удалении того, что после javadoc сгенерированный код будет работать нормально.Пожалуйста, проверьте это тоже, если кто-то все еще происходит.

Я решил проблему.

это конфликт файлов JAR.

Кажется, что у меня есть два файла JAR на моем пути сборки, которые включают в себя один и тот же пакет и классы.

smack.jar и android_maps_lib-1.0.2

удаление этого пакета из одного из файлов JAR решило проблему.

Windows 7 Решение:

подтверждено, что проблема вызвана командной строкой ProGuard в файле
[Каталог установки Android SDK]\tools\proguard\bin\proguard.летучая мышь

изменить следующую строку решит проблему:

call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %*

до

call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %1 %2 %3 %4 %5 %6 %7 %8 %9

вы можете легко решить эту проблему (с помощью Eclipse Android Developer Tools, Build: v22.0.1-685705), отключив меню > "проект" > "построить автоматически" при экспорте (un)подписанного приложения для Android. После этого не забудьте снова включить его.

Если у вас есть версия ADT 12+, вы должны обновить свой proguard с 4.4 - > 4.6 (как описано здесь). Кроме того, вы должны уйти ...\bin\proguard.bat файл в оригинальной форме.

просто загрузите его из интернета и скопируйте папку lib из загруженного пакета в :

[каталог установки Android SDK]\tools\proguard\lib

EDIT (новое решение):

похоже, что предыдущее решение - это только обход. Мне удалось, наконец, решить проблему навсегда: В моем случае было несоответствие в файлах android-support-v4 в моем проекте и в проекте Facebook, на который ссылается мой проект.

Я нашел эту ошибку, выполнив проверку Lint (Android Tools / Run Lint: Check for Common Errors)

мое предыдущее решение:

Я пробовал любое возможное решение на этом сайте-ничего не помогло!!!

наконец-то я нашел ответ здесь: https://groups.google.com/forum/#! тема / actionbarsherlock/drzI7pEvKd4

простых шагов:

перейти к проекту - > снимите флажок строить автоматически

перейти к проекту - > очистить... , очистите как проект библиотеки, так и ваш проект приложения

экспорт вашего приложения в качестве подписанного APK в то время как сборка автоматически по-прежнему отключено

вот еще один сценарий, и решение:

Если вы столкнулись с этой проблемой недавно после обновления ADT для Eclipse:

  1. в вашем проекте приложения проверьте наличие связанных исходных папок, указывающих на ваши библиотечные проекты (у них есть имена в форме "LibraryName_src").
  2. выбрать все эти проекты, щелкните правой кнопкой мыши, выбираем "Построить Путь" ->" удалить из Пути сборки".
  3. выбираем "также отключить папку из проекта", и нажмите кнопку "да".
  4. очистить, перестроить и повторно развернуть проект.

похоже, причина в том, что некоторые предыдущие версии исходных папок проекта Библиотеки ADT связаны с "дочерними" проектами, а текущая комбинация ADT/Dex больше не совместима с этим решением.

EDIT: это подтверждается записью в блоге Android Dev, в частности этот - см. 8-й абзац далее.

перейдите в проект, а затем снимите флажок "построить автоматически".Затем попробуйте экспортировать проект и ошибка ушла.

Это также может быть вызвано, если вы добавили Android.jar файл для вашего пути сборки, возможно, случайным быстрым исправлением в Eclipse. Удалите его, щелкнув правой кнопкой мыши проект ->построить путь ->настроить путь сборки -> android.банку удалить.

просто очистка проекта работала для меня каждый раз, когда эта ошибка возникла.

мое собственное и единственное решение, которое я нашел сегодня после четырех часов тестирования всех решений, представляет собой комбинацию многих решений, представленных здесь:

  • Delete проект из Eclipse
  • удалить файлы \bin и \gen из папки проекта
  • удалить ссылки на библиотеки в .classpath файл в корневой папке проекта
  • перезапустить Eclipse с помощью командной строки:eclipse -clean
  • Import проект
  • щелкните правой кнопкой мыши на проект-выберите Properties>Java Build Path>Libraries и удалить все остальное, чем Android XX.Y
  • наконец-то clean проект, подождите автоматического строительства или Build это
  • запуск и теперь он работает! По крайней мере для меня...

я пробовал каждый шаг за раз и много комбинаций, но только последовательность всех шагов сразу сделала это! Надеюсь, я не столкнусь с этим снова...

только для других людей, у которых все еще есть эта проблема, и они попробовали приведенные выше ответы, но все равно получили ошибку (что было в моем случае), тогда мое решение состояло в том, чтобы удалить проект из Eclipse и повторно импортировать его снова.

Это сделало библиотеку Android снова добавленной в мои ссылки на библиотеки, поэтому теперь у меня есть два файла Android JAR, на которые ссылаются, поэтому я удалил один из них, и теперь он компилируется нормально.

решение: удалите проект из среды Eclipse IDE, а затем повторно импортируйте его снова, а затем проверьте вышеуказанные решения.

столкнулся с этой проблемой сам сегодня. Очистка и восстановление не устранили проблему. Удаление и реимпорт проекта также не помогло.

Я, наконец, проследил его до плохого дополнения к моему .файл класса. Я думаю, что это было добавлено инструментами плагина, когда я пытался исправить другую проблему, удалив ее, избавился от" преобразования в формат Dalvik не удалось с ошибкой 1 " ошибка сборки:

<classpathentry kind="lib" path="C:/dev/repository/android-sdk-windows/platforms/android-3/android.jar">
    <attributes>
        <attribute name="javadoc_location" value="file:/C:/dev/repository/android-sdk-windows/docs/reference"/>
    </attributes>
    <accessrules>
        <accessrule kind="nonaccessible" pattern="com/android/internal/**"/>
    </accessrules>

для меня в моем пути сборки появилась дополнительная ссылка на JAR. Я удалил это, и теперь это работает.

моя проблема была вызвана ADT версии 12.0 и интеграции ProGuard. Эта ошибка хорошо документирована, и решение находится в документации

решение здесь

Командная строка ProGuard

Я имел дело с этой проблемой при использовании библиотеки Sherlock ActionBar в моем проекте. Вы могли бы сделать следующий шаг, это работа для меня.

  1. щелкните правой кнопкой мыши на свой проект, выберите Свойства.
  2. появится диалоговое окно, выберите "Java build path" в левом меню.
  3. удалите "зависимости Android" и "частные библиотеки Android" на правой панели, затем нажмите кнопку ОК
  4. очистить проект (меню проект - > очистить)
  5. право нажмите на свой проект, выберите Android Tools - > Fix Project properties
  6. очистить проект еще раз.
  7. перезагрузите компьютер
  8. открыть eclipse и экспортировать apk

надеюсь, что это поможет вам.

в моем случае проблема на самом деле с проектом OPENFEINT API. Я добавил OpenFeint как проект библиотеки:

library project]![1]![Enter image description here.

Он также добавляется в путь сборки, ADT tools 16 дает ошибку с этим sceneario.

щелкните правой кнопкой мыши на вашем проекте и выберите путь сборки, настройте путь сборки, а затем просмотрите изображение и удалите свой проект OpenFeint отсюда, и все будет сделано:)

Enter image description here

я нашел кое-что еще. Android использует /libs каталог для файлов JAR. Я видел ошибку" преобразование в формат Dalvik не удалось с ошибкой 1 " много раз, всегда, когда я делал ошибку в своих файлах JAR.

теперь я обновил Roboguice до более новой версии, поместив новый файл JAR в /libs каталог и переключение пути к классу в новую версию. Это вызвало ошибку Dalvik.

когда я удалил один из файлов RoboGuice JAR из /libs папка, ошибка исчезла. По-видимому, Android забирает все файлы JAR из /libs, независимо от того, какие из них вы указываете в пути сборки Java. Я точно не помню, но я думаю, что Android начал использовать /libs по умолчанию, начиная с Android 4.0 (Ice Cream Sandwich, ICS).

обновление Proguard до последней версии решило это для меня.

  • мои программы ProGuard путь был C:\Program Files (x86)\Android\android-sdk\tools\proguard\
  • Я скачал новую версию от здесь
  • и заменил папки bin и lib

СЛАВА БОГУ!

В общем, кажется, что эта проблема возникает, когда есть ненужные файлы JAR в пути сборки.

Я столкнулся с этой проблемой во время работы над IntelliJ IDEA. Для меня это произошло потому, что я добавил JUnit и Mockito библиотеки, которые компилировались во время выполнения. Это должно быть установлено в "тестирование" в свойствах модуля.

ни одно из ранее предложенных решений не сработало для меня. В моем случае проблема возникла, когда я переключился с ссылки на папку исходного кода библиотеки на использование файла библиотеки JAR. Первоначально был проект библиотеки Android, указанный в разделе свойства проекта приложения Android\ страница Android\ библиотека, и библиотека сравнивалась также в дереве обозревателя проектов как ссылка на исходный каталог библиотеки.

во-первых, я просто удалил ссылку на каталог из дерево проекта и я добавили библиотеку JAR в путь сборки, но это вызвало исключение.

правильная процедура была (после изменения пути сборки и возврата ссылки на источник библиотеки):

  • правильно удалите ссылку на исходный каталог библиотеки, фактически удалив ссылку из свойств проекта приложения\ страницы Android

  • добавление библиотеки JAR в путь сборки проекта приложения как обычный.

ни одно из перечисленных решений не сработало для меня.

вот где у меня была проблема:

я добавил внешний JAR-файл jSoup к пути моего проекта, сначала поместив его в исходную папку под названием "libs", а затем щелкнув правой кнопкой мыши на нем, Построить Путь -> добавить в путь сборки. Это вызвало ошибку преобразования Dalvik. Он сказал, что я "уже включил" класс из этого файла JAR. Я просмотрел каталог проекта и обнаружил, что место, где он был "уже включен" был на самом деле . Я удалил файл JAR из bin каталог и обновил проект в Eclipse, и ошибка исчезла!

все решения выше не работают для меня. Я не использую никаких предварительно скомпилированных .сосуд. Я использую ошибки LVL и Dalvik, где все связано с библиотекой лицензирования рынка.

проблема была решена путем удаления основного проекта и реимпорта (создание нового проекта из существующих источников).

У меня была такая же проблема, и ни одно из этих решений работал. Наконец, я увидел в консоли, что ошибка была вызвана дублированным классом (один в существующем проекте, Один в добавленном файле jar):

java.lang.IllegalArgumentException: already added: package/MyClassclass;
[2011-01-19 14:54:05 - ...]: Dx1 error; aborting
[2011-01-19 14:54:05 - ...] Conversion to Dalvik format failed with error 1

Так что проверьте, если вы добавляете jar с дублированными классами в вашем проекте. Если да, попробуйте удалить один из них.

это сработало для меня.

часто для меня очистка проекта не устраняет эту проблему.

но закрытие проекта в Eclipse, а затем повторное открытие, похоже, исправляет его в этих случаях...

Я столкнулся с этой проблемой, но мое решение было двояким. 1.) Мне пришлось добавить целевую версию Android под проект ->свойства -> Android. 2.) У меня не было всех Google "сторонних дополнений". Нажмите в AVD SDK manager под пакетов ->сторонние аддоны -> Google Inc. Я загрузил все SDK, и это решило мою проблему.

Я использую Android 1.6 и имел один внешний файл JAR. Что сработало для меня, так это удалить все библиотеки, щелкнуть правой кнопкой мыши проект и выбрать Android Tools - > * исправить свойства проекта (который добавил обратно Android 1.6), а затем добавить обратно внешний файл JAR.

я столкнулся с этой проблемой, потому что Android-Maven-плагин в Eclipse, по-видимому, не распознал транзитивные ссылки и ссылки, на которые дважды ссылались из нескольких проектов (включая проект библиотеки Android), и включал их более одного раза. Мне пришлось использовать фокус-покус, чтобы получить все включено только один раз, хотя Maven должен заботиться обо всем этом.

например, у меня была основная библиотека globalmentor-core, которая также использовалась globalmentor-google и globalmentor-android (последняя из которых является библиотекой Android). В globalmentor-android pom.xml Я должен был отметить зависимость как "предоставленную" , а также исключенную из других библиотек, в которые она была транзитивно включена:

    <dependency>
        <groupId>com.globalmentor</groupId>
        <artifactId>globalmentor-core</artifactId>
        <version>1.0-SNAPSHOT</version>
        <!-- android-maven-plugin can't seem to automatically keep this from being
             included twice; it must therefore be included manually (either explicitly
             or transitively) in dependent projects -->
        <scope>provided</scope>
    </dependency>

затем в окончательном приложении pom.xml Я должен был использовать правильный обман, чтобы разрешить только один путь включения- - - а также не явно включая основную библиотеку:

    <!-- android-maven-plugin can't seem to automatically keep this from being
        included twice -->
    <!-- <dependency> -->
    <!-- <groupId>com.globalmentor</groupId> -->
    <!-- <artifactId>globalmentor-core</artifactId> -->
    <!-- <version>1.0-SNAPSHOT</version> -->
    <!-- </dependency> -->

    <dependency>
        <groupId>com.globalmentor</groupId>
        <artifactId>globalmentor-google</artifactId>
        <version>1.0-SNAPSHOT</version>
        <exclusions>
            <!-- android-maven-plugin can't seem to automatically keep this from
                being included twice -->
            <exclusion>
                <groupId>com.globalmentor</groupId>
                <artifactId>globalmentor-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>com.globalmentor</groupId>
        <artifactId>globalmentor-android</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>

в моем случае

project - > properties - > java build path - > in order and export tab -> убрать android-поддержка-v4.банку

просто очистите проект

Если это не работает попробуйте другие решения