«Преобразование в формат Dalvik не удалось с ошибкой 1» на внешнем JAR - PullRequest
902 голосов
/ 21 апреля 2010

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

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

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

Ответы [ 71 ]

16 голосов
/ 08 марта 2012

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

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

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

14 голосов
/ 25 января 2011

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

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

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

10 голосов
/ 11 января 2011

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

Я наконец отследил его до плохих дополнений к моему .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 голосов
/ 26 мая 2011

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

8 голосов
/ 15 июня 2014

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

  1. Щелкните правой кнопкой мыши свой проект, выберите свойства.
  2. Появится диалоговое окно, выберите «Путь сборки Java» в левом меню.
  3. Удалите «Зависимости Android» и «Частные библиотеки Android» на правой панели, затем нажмите ОК
  4. Очистите ваш проект (выберите меню Проект -> Очистить)
  5. Щелкните правой кнопкой мыши свой проект, выберите Инструменты Android -> Исправить свойства проекта
  6. Очистить проект еще раз.
  7. Перезагрузите компьютер
  8. Открытое затмение и экспорт apk

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

8 голосов
/ 09 августа 2011

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

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

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

7 голосов
/ 23 апреля 2012

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

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

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

7 голосов
/ 10 июня 2012

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

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

7 голосов
/ 20 февраля 2012

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

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

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

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

Enter image description here

7 голосов
/ 18 января 2012

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

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

СПАСИБО БОГУ!

...