«Преобразование в формат Dalvik не удалось с ошибкой 1» на внешнем JAR

880

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

НЕОПРЕДЕЛЕННОЕ ИСКЛЮЧЕНИЕ ТОП-УРОВНЯ:
java.lang.IllegalArgumentException: уже добавлено: Lorg/xmlpull/v1/XmlPullParser;
....
Преобразование в формат Dalvik завершилось с ошибкой 1

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

  • 0
    Эта статья может помочь вам исправить эту ошибку в случае, если вы используете библиотечный проект в своем рабочем пространстве.
  • 4
    Я попробовал это, и он дал ту же ошибку. Я наконец исправил это, добавив библиотеку в Свойства-> JavaBuildPath-> Проекты и добавив туда библиотеку. Он называется «Обязательные объекты на пути сборки:».
Показать ещё 2 комментария
Теги:
dalvik
android-sdk-1.6

71 ответ

257
Лучший ответ

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

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

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

smack.jar и android_maps_lib-1.0.2

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

  • 18
    +1 - В общем, это конфликт файлов JAR. В частности, это может быть конфликт в любых двух файлах JAR. В моем случае конфликт был между jackson-all-1.7.4.jar, jackson-core-asl-1.5.4.jar и jackson-mapper-asl-1.5.4.jar. Я удалил две 1.5.4 банки и оставил 1.7.4 все.
  • 0
    Если у вас есть ScoreloopUI в каких-либо библиотечных проектах, которые вы добавили в свой собственный проект, например, как я добавил проект ScoreloopUI в мою игру AndEngine, эти jar-файлы также мешают вашим, даже если они не находятся на пути сборки вашего собственного проекта.
Показать ещё 8 комментариев
780

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

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

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

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

  • 4
    У меня была та же проблема, и вышеупомянутые шаги user408841 работали для меня.
  • 0
    Потребовалась доля времени, чтобы решить! Пальцы вверх :)
Показать ещё 35 комментариев
125

Решение для Windows 7:

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

Отредактируйте следующую строку, чтобы решить проблему:

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
  • 0
    это не сработало для меня, но комментирование строки proguard из моего файла default.properties не позволило устранить ошибку. Кажется, моя проблема как-то связана с Proguard. я только получал «Преобразование в формат Dalvik не удалось с ошибкой 1» при попытке экспортировать проект. Какие-нибудь мысли?
  • 0
    я попробовал вышеупомянутое предложение снова, и удалил и повторно добавил мой проект библиотеки LVL, и теперь это работает. Не уверен, что именно это исправить, но это работает. Слава Богу. я потратил часы на это.
Показать ещё 18 комментариев
90

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

  • 2
    Это решило это в моем случае. В противном случае проблема возникает спорадически и без определенной причины (например, плохая банка или путь)
  • 0
    Большое спасибо Ton .. Вы сэкономили мои часы ..
Показать ещё 8 комментариев
51

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

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

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

  • 3
    Это было моей проблемой в нескольких ADT. Загрузка и замена proguard JAR работает.
  • 0
    Спасибо человек, это работает сейчас.
Показать ещё 5 комментариев
42

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

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

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

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

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

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

Простые шаги:

Перейдите в Project → снимите флажок Build Automatically

Перейдите в Project → Clean..., очистите как проект библиотеки, так и свой проект приложения

Экспортируйте приложение как подписанный APK, пока Build Automatically по-прежнему инвалиды

  • 0
    Работает и очень легко
  • 0
    сработало ... глупая ошибка ..
Показать ещё 3 комментария
29

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

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

  • В своем проекте приложения проверьте, не связаны ли какие-либо связанные исходные папки с проектами библиотеки (они имеют имена в форме "LibraryName_src" ).
  • Выберите все эти проекты, щелкните правой кнопкой мыши, выберите " Путь сборки" → " Удалить из пути сборки".
  • Выберите " Также отсоедините папку от проекта" и нажмите " Да".
  • Очистить, перестроить и переустановить проект.

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

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

  • 1
    Это, безусловно, самый полезный ответ на мою конкретную проблему . Огромное спасибо!!!
  • 0
    Это то, что я мог бы успешно использовать, а не высоко одобренный ответ пользователя 408841.
28

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

  • 0
    Это работает для меня
26

Это также может быть вызвано, если вы добавили файл Android.jar в свой путь сборки, возможно, случайно быстро исправив Eclipse. Удалите его правой кнопкой мыши Project → build path → configure build path → android.jar, удалите.

  • 0
    Спасибо .. это была моя проблема ..
  • 0
    вот и все..........!!!
24

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

  • 0
    Уборка и экспорт работ для меня.
  • 0
    Перезапуск Eclipse + очистка проекта + ручная сборка работали на меня.
Показать ещё 1 комментарий
16

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

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

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

  • 0
    Было предупреждение от анонимного пользователя, что это привело к катастрофическим последствиям. Попробуйте на свой страх и риск!
  • 0
    это работает для меня, но я не делал: «затмение-чистые» и не удалял библиотеки.
Показать ещё 3 комментария
14

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

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

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

  • 0
    Спасибо! Это помогло мне с нуля.
10

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

Я, наконец, проследил его до плохих дополнений к моему .class файлу. Я думаю, что это было добавлено инструментами плагинов, когда я пытался исправить еще одну проблему, удалив ее, она избавилась от ошибки "Преобразование в формат 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>

9

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

8

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

  • Щелкните правой кнопкой мыши на свой проект и выберите свойства.
  • Появится диалоговое окно, выберите "Java build path" в меню слева.
  • Удалите "Android-зависимости" и "частные библиотеки Android" на правой панели, затем нажмите "ОК"
  • Очистите проект (выберите меню Project → Clean)
  • Щелкните правой кнопкой мыши свой проект, выберите "Инструменты Android" → "Исправить свойства проекта"
  • Очистите проект еще раз.
  • Перезагрузите компьютер.
  • Открыть eclipse и Export apk

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

  • 0
    Их сообщение об ошибке должно быть более конкретным. Вы экономите мое время. Благодарю.
8

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

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

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

  • 0
    Спасибо Крок, я не думаю, что ошибка очень хорошо задокументирована - я не нашел ее после часа поиска решения.
  • 0
    Вы, вероятно, пишете - проблема в том, что одно сообщение об ошибке имеет слишком много причин. У Google должно быть еще несколько сообщений, чтобы помочь пользователям обрисовать проблему. Вы можете утешиться тем, что мне потребовалось два дня, чтобы решить проблему, когда я с ней столкнулся ...
Показать ещё 1 комментарий
7

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

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

  • 0
    О, спасибо за упоминание «В общем, эта проблема возникает, когда в пути сборки есть ненужные файлы». После удаления ненужных файлов jar ошибка исчезла. :)
7

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

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

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

7

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

Изображение 2898.

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

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

Изображение 2899

7

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

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

СПАСИБО БОГ!

6

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

Здесь у меня возникла проблема:

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

6

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

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

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

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

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

5

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

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

  • 0
    плюс 1 за простое решение
  • 0
    И мне также нужно перезапустить Eclipse.
5

В моем случае

project- > properties- > java build path → вкладка export и export → снимите флажок android-support-v4.jar

5

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

Например, у меня было базовое ядро ​​globalmentor-core, которое также использовалось глобально-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>
  • 0
    Для меня странным было то, что <extractDuplicates>true</extractDuplicates> в плагине android-maven-plugin исправили проблему для mvn install но не для mvn deploy где я получил описанную ошибку ... действительно странно
5

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

5

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

  • 0
    Мое решение было почти таким же, как и решение @THE_DOM. Щелкните правой кнопкой мыши проект, выберите «Инструменты Android», затем выберите «Добавить библиотеку совместимости». Это загрузит эти «сторонние дополнения», если у вас их нет (решение THE_DOM), но также добавит их в ваш проект. Является ли это решение просто плацебо или нет, еще неизвестно. :)
5

Часто для меня, очистка проекта НЕ исправит эту проблему.

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

  • 1
    То же самое для меня: закрытие Eclipse и повторный запуск обычно решают его. Затем я пытаюсь, но я не могу сделать второй экспорт, мне нужно перезапустить снова.
5

У меня была та же проблема, и ни одно из этих решений не работало. Наконец, я увидел на консоли, что ошибка была вызвана дублированным классом (один в существующем проекте, один в добавленном файле 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 дублированные классы в своем проекте. Если да, попробуйте удалить один из них.

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

5

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

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

4

Этот ответ в основном состоит в том, что многие люди пытаются сказать, но многие люди могут не понимать. Так что...

"Еще одна причина может заключаться в том, что у вас есть файл JAR, расположенный где-то в вашей папке проекта, а затем добавили ее в качестве библиотеки путей Java. Оно делает не отображается в разделе" Проводник пакетов ", поэтому вы его не замечаете, но это делает подсчет дважды, вызывая страшную ошибку Дальвика". Jan 2 '12 в 6:23 Rashmi.B

Значение:

Если у вас есть, например, эти две библиотеки (.jar) в папке lib: Изображение 2900

а затем эти две папки добавляются в ваш путь сборки: Изображение 2901

означает, что они считаются дважды, что дает вам ошибку!

Решение:

  • Удалите эти библиотеки из пути сборки И, чтобы удалить "Android Dependencies": Изображение 2902
  • Очистить все проекты
  • Экспорт проекта
  • Наслаждайтесь!:)
4

Ни один из ответов здесь не помог в моем случае.

Для меня проблема заключалась в том, что mvn eclipse:eclipse генерировал запись в classpath, которая была ссылкой на проект для проекта библиотеки Android, однако она не отображалась в настройках пути построения Eclipse! Это означало, что классы библиотеки оказались в dexer дважды, один раз из скрытой ссылки на проект, и один раз из JAR связанной библиотеки.

Мне пришлось открыть .classpath с помощью текстового редактора и удалить элемент проектов вручную. Это устранило проблему.

4

Моя проблема заключалась в интеграции Ant + ProGuard + AdMob SDK library + Режим отладки. Я создавал debug APK с помощью Ant и добавил ADMB SDK JAR в каталог libs/. Eclipse обычно генерировал отладчик APK, но Ant не мог. Я получил следующую ошибку.

[apply] НЕОПРЕДЕЛЕННЫЙ ТОП-УРОВЕННЫЙ ИСКЛЮЧИТЕЛЬ: [apply] java.lang.IllegalArgumentException: уже добавлено: Lcom/google/ads/AdActivity; [apply] at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123)

У меня также был ProGuard включен для сборки отладки в моем build.xml (по умолчанию отключено):

<target name="-debug-obfuscation-check">
    <property name="proguard.enabled" value="true"/>
</target>

Это была проблема. Как-то ProGuard и SDK AdMob не живут вместе в режиме отладки. ProGuard не обфускал класс AdActivity, поэтому он появился в bin/proguard/obfuscated.jar unobfuscated, но тот же класс существует в файле JAR AdMob SDK. Eclipse создавал debug APK без ProGuard, поэтому он работал нормально.

Итак, мое решение состояло в том, чтобы просто отключить ProGuard для отладочных построек в build.xml. Надеюсь, это поможет кому-то.

4

Я знаю, что это уже ответило, но вот мое решение:

Мой Android-проект был из Subversion репозитория, и я просто сделал Checkout как новый проект. Мне пришлось вручную добавить мои библиотеки (Android и Java) в путь сборки, иначе это не позволило бы мне скомпилировать. Тогда я получил бы вышеуказанную ошибку.

Мне пришлось создать новый проект Android, а затем вручную скопировать изменения.

4

В моем случае им было добавлено exteranl jar. Итак, я переместил внешнюю позицию jar в начало ссылки на android в Project Prop --- > Java buildPath --- > Ссылки на проект

3

Для меня проблема заключалась в том, что я установил неправильный уровень соответствия компилятора (1,8 вместо 1.7).

Этот ответ решил:

В разделе Project SDK, когда вы добавляете Android SDK, вы должны предоставить Java SDK, и все мои SDK для Android используют Java 8 в качестве SDK, чтобы он создайте файлы классов с неправильной версией, даже если проект уровень 1,7 (я не знаю, почему, я предположил, что все было выбрано по уровню проекта). Теперь я изменил SDK (версия java "1.x.0", часть.)

  • 1
    В 2018 году, застрявшее в унаследованном приложении, которое должно быть построено с Eclipse Neon, сборка завершилась неудачей с сообщением Dalvik. Очень расстраивает. Проблема заключалась в том, что Neon устанавливается с совместимостью компилятора на уровне 1.8, а для устаревшего приложения (api 19, 4.2.2) необходимо использовать совместимость компилятора 1.7 (не компилятор 1.7, совместимость 1.7). Было очень неприятно просеять множество предпочтений, чтобы наконец найти уровень совместимости. Выражаю этот ответ, потому что в нем говорится, что я сделал, и что вам нужно будет сделать ... ЕСЛИ вы можете найти этот ответ (как я не мог, я решил его самостоятельно). разочаровывающий
3

Мне лично удалось это исправить, вручную отредактировав файл project.properties в проекте Eclipse.

Что это было:

target=android-16
android.library.reference.1=..\\..\\github\\ActionBarSherlock\\library
android.library.reference.2=../../github/android-numberpicker/library

Что я изменил, чтобы проблема исчезла:

target=android-16
android.library.reference.1=../../github/ActionBarSherlock/library
android.library.reference.2=../../github/android-numberpicker/library

Этот файл не был исправлен автоматически, используя инструмент "Исправить свойства проекта".

3

Я использовал ADT r14, и когда я пытался добавить какой-либо проект библиотеки, я получил эту ошибку. Для меня то, что работало, просто обновляло ADT до последней версии. Он решил проблему мгновенно. Я попробовал почти все обходные пути, заданные в stackoverflow, но ничего больше не работало для меня.

3

Что для меня работало:

  • Очистить сборку полностью
  • Удален посторонний android.jar файл, который я нашел в Project/Properties/Libraries.
3

У меня была такая же ошибка с проектом, содержащим protobuf lite (Буферы протокола от Google) в его пути к классам. Думаю, причина в том, что protobuf-lite.jar, который был в моем пути к классам, и папка проекта была построена на моей предыдущей машине. Когда я загрузил Maven и пересоздал файл protobuf-lite.jar, а затем добавил его заново в качестве пользовательской библиотеки для моего проекта, все работало нормально.

2

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

2

Я использую ADT 7, а остальные исправления не работают (но я все равно их сделал).

Затем я скопировал proguard.cfg из другого проекта и просто вложил его в старшую папку проекта ADT. И wallah, он работал.

2

Эта ошибка вызвана

  • имеет более одного JAR файла.
  • Если JAR файл имеет похожие файлы классов, формат .dx не может быть проанализирован.

Решение:

  • сделайте и выберите соответствующий JAR файл.
  • получите последнюю версию.
2

В моем случае проблема возникла после обновления Eclipse и ADT в марте 2011 года. В моем проекте я использую JAR, который создает проблемы для восстановления, и ни одно из предыдущих решений не работало. Мне потребовались несколько дней, чтобы попробовать все, ищите вверх и без проблем. По-видимому, была двойная ссылка на файл .jar.

Наконец, я:

  • удалены любые ссылки из библиотек,
  • удалил физическую форму файла в приложении.
  • получил .jar(находится в другом каталоге вне проекта), используя "Добавить внешние банки"
  • выполнил проект "чистый",
  • обновить ссылки в модуле, вызывающем банку с помощью (ctrl) + (shift) + O

и он, наконец, скомпилировался.

1

Просто Project > Clean работал у меня.

1

Для пользователей NewRelic:

Если вы интегрировали новую фреймворк в своем приложении, это происходит, когда новая реляционная версия outOf date.

Решение:

  • Обновите банку newrelic до последней версии. На eclipse просто щелкните правой кнопкой мыши по проекту и обновите newrelic. Или вы можете загрузить новую версию напрямую.
1

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

Мои проекты прикреплены к системе управления версиями GIT, и я понял, что при экспорте в приложение Andorid существует какая-то связанная с GIT задача. Затем я совершил все изменения в репозитории GIT, и ошибка исчезла.

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

  • 0
    Это помогло мне, спасибо! к сожалению, похоже, что нет общего решения этой ошибки.
1

Это обычно происходит со мной после того, как eclipse работает в течение длительного времени или после того, как я успешно сфотографировал apk.

Что касается моего опыта, то исправить это я просто перезапустить eclipse.

  • 0
    Да, для меня это тоже кажется единственным решением. перепробовал многие предложения, сделанные в других ответах, но, похоже, они не сработали. обычно это происходит после того, как у вас уже есть проект «Запуск от имени», «приложение для Android», когда вы все еще работаете над ним, а затем экспортируете его. перезапуск затмения и сразу же экспорт работ для меня!
1

В моем случае, чтобы отключить мой телефон от USB, все, что нужно, чтобы исправить эту ошибку.

1

Ошибка должна быть окончательно исправлена ​​ с версии предварительного просмотра ADT 17/Tools r17! По крайней мере, некоторые его экземпляры, если не все.

  • 0
    Я могу сказать, что они не исправлены. Я получаю их больше под R20, чем каждый раньше. Теперь я жалею об обновлении.
1

Я прошел через этот ответ и до сих пор не получил разрешения. Я продолжал искать в Интернете и обнаружил, что вы можете получить эту ошибку, если пытаетесь экспортировать APK, когда устройство Android подключено к компьютеру.

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

1

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

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

0

У меня была эта проблема с Eclipse neon и JDK 1.8. После перехода на JDK 1.7 проблема была решена.

Изображение 2903

0

Я только что установил новейшее eclipse с новейшим API и новейшими SDK и инструментами, но спустя годы эта ошибка не состарилась. Я теряю день, чтобы понять это. Пробовал все. Напрасно. Потому что это сообщение очень общее, и многие другие проблемы его поднимут. Таким образом, решения, указанные некоторыми, не будут работать для других.

Хорошим первым подходом является переход в Window > Preferences > Android > Build и UNCHECK 'Пропустить упаковку и удаление...'. Таким образом, у вас будет больше информации о вашей конкретной ошибке при создании, а не только об экспорте.

В моем случае я получил версию "Dx неподдерживаемой версии класса..." . Об этой ошибке я не заметил. Ну, на основании этого я обнаружил, что некоторые старые банки, которые я использую, были скомпилированы с 1.6 и другими с 1.7. Поэтому я изменил уровень соответствия компилятора IDE по умолчанию на 1.6 (Window > Preferences > Java > Compiler), и после полной очистки и восстановления каждой зависимости, которую я имел, я, наконец, смог создать свой APK.

0

Ничего не работало для меня здесь, мне пришлось изменить файл proguard, чтобы добавить эту строку:

-keep class !mycode.** { *; }

который держит любой код, а не мой пакет.

0

Я пробовал все, но ничего не работал.

Интересно, что если мы экспортируем приложение android с помощью proguard, мы получаем ошибку "преобразование в формат dalvik с ошибкой 1", но если мы не используем proguard при экспорте, APK был успешно создан.

Наконец, один из jar в нашем проекте Android имел файл .class с размером более 1,5 МБ. Его размер вызывал эту проблему. Мы разделили этот класс на многие более мелкие классы и проблема исчезла.

0

Привет Раньше у меня были Android SDK Build tools 18.1.1 и Windows XP. то мое приложение работало правильно.

Но я обновил мою систему до Windows 7, а также обновил Android SDK Build tools to 19, чтобы иметь последние конфигурации.

Но у моего проекта есть файл xercesImpl-2.9.1.jar, поэтому, когда я начал запускать свое приложение с новыми/обновленными конфигурациями, я получал

Conversion to Dalvik format failed with error 1 while parsing org/apache/xerces/impl/xpath/regex/ParserForXMLSchema.class

Итак, я просмотрел все ответы, которые упоминаются на этот вопрос, но не смог их решить. Я задавался вопросом в течение 4 дней, после чего нашел эту ссылку, которая спасла мне жизнь, после прочтения этого я узнал, что проблема связана с xercesImpl-2.9.1.jar с Android SDK Создайте инструменты до 19.

Итак, я понизил его до инструментов Android SDK Build до 18.1.1. И я избавился от этой проблемы.

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

Это заставило меня нахмуриться. Надежда поможет другим.

0

Другой случай андроид-колдовства, если ничего не работает, попробуйте увеличивая версию versionCode и versionName на 1 в манифесте.

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

0

Ничего не помогло, но предлагаемое решение здесь работало как шарм:

то есть. добавив строку -optimizations !code/allocation/variable в proguard-project.txt

0

Ни один из ответов здесь не работал у меня.

Однако я мог исправить ошибку, удалив контейнер Android classpath (в моем случае Android 4.4) из ВСЕХ вложенных библиотек, кроме основного приложения, а затем экспортировав APK. Библиотечные проекты больше не будут компилироваться, но файл jar все еще существует и APK развертывается. Я не уверен, в чем причина такого поведения.

0

В большинстве случаев эта проблема вызвана ошибкой или поврежденной версией Proguard, которая по какой-то странной причине часто устанавливается из официального менеджера Android SDK

Не редактируйте файл bat proguard, чтобы избежать дальнейших проблем, если вы получите эту проблему, загрузите последнюю стабильную версию Proguard из официальный сайт и замените все файлы proguard в

android-sdk\tools\proguard

с последними файлами proguard, извлеченными из загруженного архива.

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

0

Я нашел решение по-разному... https://stackoverflow.com/questions/11883178/conversion-to-dalvik-format-failed-with-error-1-exporting-apk

Благодаря этому вы не можете устранить удаление и прочее

0

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

Project → Properites → Java Build Path → вкладка Source → папка project/src → двойной щелчок на Excluded → удалить все файлы, которые больше не существуют в проекте.

0

-Удалить все свои библиотеки с вашего пути Java. И добавьте его снова. - Очистите проект.

Запустите его.

0

Я очистил свой основной проект приложения и проект библиотеки Android, который он использует. Решил проблему

0

API Google для зависимостей вызывает эту проблему. После удаления он работает хорошо.

0

Если вы используете SDK Leadbolt для рекламы в своем приложении, и вы объединяете "объявления с уведомлением" и "медийные объявления", вам нужно использовать pubxappCom.jar вместо pubxapp.jar для уведомлений или получить эту ошибку!

Счастливое кодирование!

0

У меня была та же проблема. когда я проверил, я увидел, что есть 2 класса с одинаковым именем, по 1 в каждом из внешнего файла jar, который я добавил. я должен был удалить 1 из файла jar. К счастью, у меня есть еще один файл jar для 1, который я удалил.

0

лучше включить все файлы *.jar в каталог "lib" дерева папок проекта. и таким образом вам не нужно будет определять путь сборки, перейдя к свойствам проекта. "lib" уже является способом построения

0

Ни один из этих ответов не работал у меня. Моя проблема вызвана JUnit и hamcrest. См. Также java.lang.IllegalArgumentException: уже добавлено: Lorg/hamcrest/BaseDescription; Конверсия в формат Dalvik завершилась с ошибкой 1

-15

Если вы хотите решить эту проблему, вам придется сменить Android SDK1.6 на Android 2.2. После этого очистите проект, а затем выполните сборку и запуск. Затем вы увидите, что ваше приложение запущено.

  • 0
    Пожалуйста, дайте мне причины для негативного мышления. Я решил эту проблему таким образом
  • 0
    Потому что ходатайство против голосов строго запрещено.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню