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

6 голосов
/ 11 октября 2011

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

Вот где у меня возникла проблема:

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

6 голосов
/ 28 февраля 2011

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

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

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

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

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

5 голосов
/ 29 ноября 2011

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

    <!-- 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>
5 голосов
/ 23 июня 2011

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

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

5 голосов
/ 15 июля 2011

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

5 голосов
/ 26 августа 2011

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

5 голосов
/ 05 января 2011

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

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

5 голосов
/ 11 января 2015

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

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

5 голосов
/ 19 октября 2012

В моем случае

project-> properties-> путь сборки Java -> вкладка «Порядок и экспорт» -> снимите отметку android-support-v4.jar

5 голосов
/ 19 января 2011

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

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

...