"Ошибка преобразования в формат Dalvik с ошибкой 1" на внешней банке
в моем приложении Android в Eclipse я получаю следующую ошибку.
НЕОЖИДАННОЕ ИСКЛЮЧЕНИЕ ВЕРХНЕГО УРОВНЯ:
Ява.ленг.IllegalArgumentException: уже добавлено: Lorg/xmlpull/v1 / XmlPullParser;
....
Преобразование в формат Далвик Ошибка 1
эта ошибка появляется только при добавлении определенного внешнего файла JAR в мой проект. Я долго искал возможное решение, но ни одно из возможных решения работают. Я даже попытался перейти на Android 1.6 вместо 1.5 (текущая версия, которую я использую).
30 ответов
перейти к проекту "свойства" Java Build Path "библиотеки и удалить все, кроме" Android X. Y "(в моем случае Android 1.5). нажимать OK. Перейдите к проекту "очистить" чистые проекты, выбранные ниже " выберите проект и нажмите кнопку ОК. Это должно сработать.
также возможно, что у вас есть файл JAR, расположенный где-то в папках проекта (Я скопировал файл JAR Admob в свою папку src), а затем добавил его в качестве библиотеки путей Java. Он не отображается в Проводнике пакетов, таким образом, вы этого не замечаете, но он подсчитывается дважды, вызывая страшную ошибку Dalvik 1.
другой возможной причиной могут быть конфликты имен пакетов. Предположим, у вас есть пакет com.abc.xyz
и класс с именем A.java
внутри этого пакета и другого проекта библиотеки (который добавляется к зависимости этого проекта), который содержит то же самое com.abc.xyz.A.java
, тогда вы получите точно такую же ошибку. Это означает, что у вас есть несколько ссылок на один и тот же файл A.java
и не могу правильно построить его.
другими способами это может произойти, если вы случайно или сознательно редактируете / добавляете что-либо в файл пути к классу вручную .В некоторых случаях мы можем добавить android.путь jar вручную к файлу classpath для создания Java doc.При удалении того, что после javadoc сгенерированный код будет работать нормально.Пожалуйста, проверьте это тоже, если кто-то все еще происходит.
Я решил проблему.
это конфликт файлов JAR.
Кажется, что у меня есть два файла JAR на моем пути построения, которые включают тот же пакет и классы.
smack.jar
и android_maps_lib-1.0.2
удаление этого пакета из одного из файлов JAR решило проблему.
Решение Для Windows 7:
подтверждено, что проблема вызвана командной строкой ProGuard в файле
[Каталог установки Android SDK]\tools\proguard\bin\proguard.летучая мышь!--5-->
изменить следующую строку решит проблему:
call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %*
to
call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %1 %2 %3 %4 %5 %6 %7 %8 %9
вы можете легко решить эту проблему (с помощью инструментов разработчика Eclipse Android, Build: v22.0.1-685705), выключив меню > "проект" > "Build Automatically" при экспорте (un) подписанного приложения для Android. После этого не забудьте включить его снова.
Если у вас есть версия ADT 12+, вы должны обновить свой proguard с 4.4 - > 4.6 (как описано здесь). Кроме того, вы должны уйти ...\bin\proguard.bat файл в оригинальной форме.
просто загрузите его из интернета и скопируйте папку lib из загруженного пакета в :
[каталог установки Android SDK]\tools\proguard\lib
EDIT (новое решение):
похоже, что предыдущее решение - это только обход. Мне удалось, наконец, исправить проблему навсегда: В моем случае было несоответствие в файлах android-support-v4 в моем проекте и в проекте Facebook, на который ссылается мой проект.
Я нашел эту ошибку, выполнив проверку корпии (Android Tools / Run Lint: Check for Common Errors)
мое предыдущее решение:
Я пробовал любое возможное решение на этом сайте-ничего не помогло!!!
наконец-то я нашел ответ здесь: https://groups.google.com/forum#!тема / actionbarsherlock / drzI7pEvKd4
простых шагов:
перейти к Project - > снимите флажок Build Automatically
перейти к проекту - > очистить... , очистите как проект библиотеки, так и ваш app project
экспортировать ваше приложение, подписанное АПК при сборке автоматически еще отключено
вот еще один сценарий, и решение:
Если вы столкнулись с этой проблемой недавно после обновления ADT для Eclipse:
- в вашем проекте приложения проверьте все связанные исходные папки, указывающие на ваши проекты библиотеки (у них есть имена в форме "LibraryName_src").
- выбрать все эти проекты, щелкните правой кнопкой мыши, выбираем "Построить Путь" ->"удалить из Пути сборки".
- выбираем "также отключить папку из проекта", и нажмите кнопку "да".
- очистить, перестроить и повторно развернуть проект.
похоже, причина в том, что некоторые предыдущие версии исходных папок проекта Библиотеки ADT связаны с "дочерними" проектами, а текущая комбинация ADT/Dex больше не совместима с этим решением.
EDIT: это подтверждается записью блога Android Dev, в частности этот - см. 8-й абзац и далее.
перейдите в проект, а затем снимите флажок "построить автоматически".Затем попробуйте экспортировать проект и ошибка ушла.
Это также может быть вызвано, если вы добавили Android.jar
файл на ваш путь сборки, возможно, случайным быстрым исправлением в Eclipse. Удалите его, щелкнув правой кнопкой мыши проект ->построить путь ->настроить путь сборки -> android.Джар удалить.
мое собственное и единственное решение, которое я нашел сегодня после четырех часов тестирования всех решений, представляет собой комбинацию многих решений, представленных здесь:
-
Delete
проект из Eclipse - удалить файлы
\bin
и\gen
из папки проекта - удалить ссылки на библиотеки в
.classpath
файл в корневой папке проекта - перезапустите Eclipse с помощью командной строки:
eclipse -clean
-
Import
проект - щелкните правой кнопкой мыши на project-select
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. Эта ошибка хорошо документирована, и решение находится в документации
решение здесь
Я имел дело с этой проблемой при использовании библиотеки Sherlock ActionBar в моем проекте. Вы можете сделать следующий шаг, это работа для меня.
- щелкните правой кнопкой мыши на свой проект, выберите Свойства.
- появится диалоговое окно, выберите "путь сборки Java" в левом меню.
- удалить "зависимости Android" и "частные библиотеки Android" на правой панели, затем нажмите кнопку ОК
- очистить проект (меню проект - > очистить)
- право нажмите свой проект, выберите Android Tools - > исправить свойства проекта
- очистить проект еще раз.
- перезагрузите компьютер
- открыть eclipse и экспортировать apk
надеюсь, что это поможет вам.
в моем случае проблема на самом деле связана с проектом OpenFeint API. Я добавил OpenFeint как проект библиотеки:
.
Он также добавлен в путь сборки, ADT tools 16 дает ошибку с этим sceneario.
щелкните правой кнопкой мыши на своем проекте и выберите путь сборки, настройте путь сборки, а затем посмотрите изображение и удалите свой проект OpenFeint отсюда, и все готово:)
я нашел кое-что еще. Android использует /libs
каталог для файлов JAR. Я видел ошибку" преобразование в формат Dalvik не удалось с ошибкой 1 " много раз, всегда, когда я сделал ошибку в своих файлах JAR.
теперь я обновил Roboguice до более новой версии, поместив новый файл JAR в /libs
каталог и переключение пути к классу в новую версию. Это вызвало ошибку Dalvik.
когда я удалил один из файлов RoboGuice JAR из /libs
папка, ошибка исчезла. По-видимому, Android подбирает все файлы JAR из /libs
, независимо от того, какие из них вы указываете в пути сборки Java. Я точно не помню, но я думаю, что Android начал использовать /libs
по умолчанию, начиная с Android 4.0 (сэндвич с мороженым, ICS).
обновление Proguard до последней версии решило это для меня.
- мои программы ProGuard путь был
C:\Program Files (x86)\Android\android-sdk\tools\proguard\
- Я загрузил новую версию из здесь
- и заменил папки bin и lib
СЛАВА БОГУ!
В общем, кажется, что эта проблема возникает, когда есть ненужные файлы JAR в пути сборки.
Я столкнулся с этой проблемой во время работы над IntelliJ IDEA. Для меня это произошло потому, что я добавил JUnit и Mockito библиотеки, которые компилировались во время выполнения. Это должно быть установлено в "тестирование" в свойствах модуля.
ни одно из ранее предложенных решений не сработало для меня. В моем случае проблема возникла, когда я переключился с ссылки на папку исходного кода библиотеки на использование файла библиотеки JAR. Первоначально был проект библиотеки Android, указанный в разделе свойства проекта приложения Android\ страница Android\ библиотека, и библиотека сравнивалась также в дереве project explorer как ссылка на исходный каталог библиотеки.
во-первых, я просто удалил ссылку на каталог из дерево проекта и я добавили библиотеку JAR в путь сборки, но это вызвало исключение.
правильной процедурой было (после изменения пути сборки и возврата ссылки на источник библиотеки):
правильно удалите ссылку исходного каталога библиотеки, фактически удалив ссылку из свойств проекта приложения\ Android page
добавление библиотеки 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 - > *исправить свойства проекта (который добавил обратно 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>
в моем случае
проект - >свойства - >путь сборки java - > вкладка порядок и экспорт ->убрать android-поддержка-v4.Джар