«Преобразование в формат 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 ]

0 голосов
/ 23 сентября 2013

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

Проект -> Свойства -> Путь сборки Java -> Вкладка «Источник» -> Папка проекта / src -> Двойной щелчок на «Исключено» -> Удалить все файлы, которых больше нет в проекте.

0 голосов
/ 24 февраля 2011

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

0 голосов
/ 29 июля 2013

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

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

0 голосов
/ 30 декабря 2015

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

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

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

0 голосов
/ 20 апреля 2017

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

Хороший первый подход - перейти в «Окно»> «Установки»> «Android»> «Build» и «UNCHECK» «Пропустить упаковку и dexing ...». Таким образом, вы будете иметь больше подсказок о вашей конкретной ошибке при сборке, а не только об экспорте.

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

0 голосов
/ 21 декабря 2013

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

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

0 голосов
/ 03 июня 2013

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

0 голосов
/ 09 марта 2016

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

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

, который хранит любой код, который не является моим пакетом.

0 голосов
/ 13 марта 2014

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

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

0 голосов
/ 05 июня 2017

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

enter image description here

...