Невозможно выполнить dex: несколько файлов dex определяют массив Lcom / myapp / R $;

366

С момента обновления до ADT 14 я больше не могу создавать свой проект. Он был строит до обновления.

Ошибка:

[2011-10-23 16:23:29 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/myapp/R$array;
[2011-10-23 16:23:29 - myProj] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom/myapp/R$array;

Сообщается о подобных проблемах, и я пробовал предложения там, включая

  • Перезапуск Eclipse.
  • Очистка проекта и перестройка - отключите опцию "Project- > Build Automatically", затем "Clean" и "Build", затем попробуйте запустить. reset "Создать автоматически" для параметра "Вкл."
  • Повторная установка инструментов разработчика Android
  • Повторная установка Eclipse (обновлена ​​до последней версии 3.7.1)
  • Создал новый проект, импортирующий из файловой системы
  • Создал новый проект из подрывной деятельности.
  • 0
    вы работали на Windows или Mac .. потому что я хотел бы следовать следующим ответам, но я не уверен, будут ли они работать на Mac .. спасибо
  • 0
    если вы импортировали проект библиотеки, а также импортировали JAR библиотеки в папку lib, вам нужно удалить файл jar из папки lib, а также из [Build Path -> Configure Build Path]. И это будет работать.
Показать ещё 1 комментарий
Теги:
android-sdk-tools
dex
adt

54 ответа

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

Моя проблема была решена после очистки некоторых каталогов и файлов, оставшихся от предыдущих версий инструментов. ADT Rev 14 изменяет, где хранятся двоичные файлы. Я удалил весь каталог bin, перезапустил Eclipse и очистил сборку и принудительно восстановил. Сначала это показалось, но проблема возникла после следующего прогона.

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

  • 42
    Какого черта гугл. Эта проблема продолжает возвращаться даже с R15.
  • 2
    Я отредактировал решение выше, чтобы включить окончательное решение. Решено навсегда сейчас.
Показать ещё 3 комментария
475

У меня была такая же проблема, довольно странная, потому что это происходило только при использовании Eclipse (но все было в порядке с Ant). Вот как я его исправил:

  • Щелкните правой кнопкой мыши на Project Name
  • Выберите Build PathConfigure Build Path
  • В Java Build Path перейдите на вкладку Order and Export

  • Снимите флажок .jar библиотеки

Только иногда: Вкладка "Заказ" и "Экспорт" у меня не было библиотеки jar, поэтому я заблокировал элемент "Частные библиотеки Android". Теперь мой проект запущен.

  • 0
    В моем проекте я включил библиотеку поддержки из каталога sdk в мой путь сборки, и у меня была библиотека поддержки в папке "libs" для поддержки сборки ant. Я снял галочку с одного, и это исправило мою проблему.
  • 20
    Когда-то между последним сборкой и запуском в моем проекте загадочно появилась новая библиотека: «Частные библиотеки Android», содержащие библиотеку поддержки, на которую я уже ссылался. Таким образом, появилось это таинственное «определение нескольких файлов dex ____». Проверка пути сборки Java, просмотр этого нового элемента и снятие отметки с изначально включенной библиотеки поддержки решили эту проблему для меня.
Показать ещё 10 комментариев
49

Ничего из этого не помогло. Это была простая проблема в конце.

У меня был проект, который использует FacebookSDK и ViewPagerIndicator в качестве проектов библиотеки. Все они были построены на Android API 16, и эти два проекта использовали библиотеку поддержки Android vX (X не 16)

Я добавил внешний JAR для обоих этих проектов и указал его на \extras\android\v4... А также удалил ящик v4, который у меня был в папках libs.

Очистите все проекты и заново постройте.

Voilla!

Точная ошибка, которую я получал: Невозможно выполнить dex: несколько файлов dex определяют Landroid/support/v4/view/PagerAdapter; Не удалось выполнить преобразование в формат Dalvik: невозможно выполнить dex: несколько файлов dex определяют Landroid/support/v4/view/PagerAdapter;

46

[Решено для меня]

Свойства проекта Eclipse- > Java build path- > Order and export

Снимите флажки с частных библиотек Android.

  • 0
    спасибо .. извлекать решения
  • 4
    Не помогло в моем случае
Показать ещё 4 комментария
35

Эта проблема происходила у меня, у меня был внешний .jar в моей папке libs под названием gson-2.2.2.jar, но по некоторым причинам их было два, gson-2.2.2.jar и gson-2.2.2.jar(1), я просто удалил последний, и мой проект снова был построен отлично.

  • 2
    У меня была похожая проблема, когда в папке libs был старый файл jar, и я связал его с новым jar в той же рабочей области. Когда ADT находит несколько определений для одного и того же символа, он выдает ошибку, подобную этой. Удаление старого файла jar в папке libs исправило его для меня.
  • 0
    Внешняя банка - одна из причин проблемы, и так было и в моем случае. Я только что оставил в моих /libs оставшуюся банку из предыдущего эксперимента, в результате чего был создан и библиотечный проект, и .jar, сгенерированный из него. Удаление этого jar в /libs решает проблему. +1
31
  • Закрыть eclipse.
  • Удалить папку bin внутри папки проекта.
  • Запустите eclipse и очистите проект.
  • Теперь запустите, и проблема не исчезнет
  • 53
    не помогает..
  • 0
    Ответ Матеуса Викари решил мою проблему, я удалил дублирующихся библиотек, и это работает как шарм ..
Показать ещё 4 комментария
25

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

Для меня это произошло, когда я добавил android-support-v4.jar в свою папку libs/, и каким-то образом затмение добавило вторую копию в bin/classes/android-support-v4.jar.

Удаление дополнительной копии в bin/classes решило проблему - неуверенность в том, почему Eclipse сделал там копию.

Вы можете проверить это с помощью

grep -r YourOffendingClassName YourApp | grep jar

24

Для меня я просто щелкнул правой кнопкой мыши по проекту → Путь сборки → настроить путь сборки → Библиотеки → удалить зависимость

после его работы.

19

Эта ошибка может произойти, если у вас есть две банки, содержащие одни и те же имена классов, например. У меня было две библиотеки: jsr311-api-1.1.1.jar и jersey-core-1.17.1.jar, оба из которых содержат класс javax.ws.rs.ApplicationPath. Я удалил jsr311-api-1.1.1.jar и работал нормально.

  • 1
    Это идеальное решение для меня. Я добавил одинаковые библиотеки дважды. Благодарю.
19

Я получал эту ошибку после добавления facebooksdk.jar к проекту, который уже имел зависимости от android-support-v4.jar. Поскольку facebookdk.jar уже включает в себя свою собственную android-support-v4.jar, были конфликты. Удаление ранее android-support-v4.jar из проектов Properties/Java Build Path/Libraries разрешило проблему для меня.

16

Перейдите в Проект/свойства и Java Путь сборки и не отмечены частные библиотеки Android.

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

Готово

15

Я удалил зависимости Android от пути сборки, и он сработал.

Изменить: игнорировать это. У меня была такая же банка в моих зависимостях maven и libs. Я удалил его в папке lib.

  • 2
    Удаление зависимостей Android из пути сборки сломало мой проект. К счастью, это было легко восстановить, щелкнув правой кнопкой мыши проект> Инструменты Android> Исправить свойства проекта.
  • 0
    В некоторых случаях удаление андроид-зависимостей и восстановление их решает некоторые проблемы. Но, как в моем редактировании, это не так.
11

Использование Eclipse:

перейти к проекту properties > Java build path > Order and export

затем снимите флажок Android private libraries.

9

Для меня эта проблема существует только в том случае, если в моем проекте задействованы проекты библиотеки Android. Поэтому, когда я удаляю все библиотеки и делаю, как вы сказали, я могу снова запустить свое приложение. Если есть задействованные библиотеки, даже трюк с извлечением мусора выиграл.

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

  • 0
    Многие решения выглядят как вуду ... :)
9

У вас, вероятно, установлен r14, эта ошибка, возможно, была вызвана из-за обновления инструментов платформы, вам необходимо повторно установить свой sdk

  • 0
    Я просто полностью сдул свой SDK и установил его только что из загруженного zip-файла, а затем загрузил API-интерфейсы Android с помощью Android SDK Manager. У меня были большие надежды, но проблема сохраняется.
  • 0
    В Windows есть скрытая папка .android, которую вы тоже должны удалить.
Показать ещё 1 комментарий
8

В основном я столкнулся с той же проблемой. Я удалил папку BIN, а затем удалил неиспользуемые файлы jar для Order and Import из eclipse. ЭТО РАБОТАЕТ после этого

8

Выберите проект в Проводнике проекта, щелкните правой кнопкой мыши и выберите "Свойства" → "Путь сборки Java" → "Источник" → Установите флажок "Разрешить выходные папки для исходных папок"

  • 0
    Не помогло мое дело.
8

Удаление папки bin было недостаточно, я также удалил папку gen. Затем после двух перестроек сообщение об ошибке dex исчезло.

7

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

Я столкнулся с этой проблемой после обновления андроидов sdk и eclipse. Никакое обновление не будет безнаказанным!

Проблема для меня была связана с библиотечными проектами, мое приложение ссылается как на стандартные проекты Java, так и на проекты библиотеки Android. Я заметил, что в настройках пути Java Build Path были включены проекты библиотек android library src и res в списке Source (для всех, у которых упоминается bin в исходном выпуске, src и res также была проблема).

Итак, решение было:

  • Удалите все ссылки на источник и ссылки на ссылки на сайты Android из раздела "Путь сборки Java" в настройках как в списке источников, так и в списке "Проект"
  • Убедитесь, что чистые java-зависимости указаны в списке Project и отмечены на вкладке Order и Export, поэтому классы включены в apk
  • Убедитесь, что все зависимости в Android-библиотеке указаны в разделе свойств проекта Android в разделе библиотеки под проверенными версиями SDK.

Это было вместе, чтобы собрать все это вместе с другими решениями! Уф!

  • 0
    Хорошо сказано! Я пришел к одинаковым выводам после большой работы. Я просто хотел добавить, что если любой из ваших библиотечных проектов включает в себя другие библиотечные проекты или зависимости на чистом Java, все они должны быть добавлены одинаково, в противном случае возникнет эта ошибка. Если вы будете следовать приведенным выше правилам для всех ваших проектов, у вас не должно возникнуть никаких проблем.
  • 1
    Еще одна вещь ... кажется, что если вам не нужно экспортировать частные библиотеки Android проекта или проекта библиотеки, не делайте этого. Если его экспортирует более одного проекта или проекта библиотеки, вы получите ошибку множественных файлов dex.
6

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

6

нашел решение, я верю???

    [2013-04-28 23:56:09 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/coremedia/iso/AbstractBoxParser$1;

Где он говорит: "Lcom/coremedia/iso/AbstractBoxParser $1", который, как оказалось, является местоположением библиотеки, которую я импортировал, что вызывало проблему. Посмотрел com.codemedia.iso.AbstractBoxParser $1.class и .AbstractBoxParser.class.... взял эту банку, распаковал ее, удалил оба из этих файлов, затем переупакован как .zip, добавил в библиотеку, очистился и работает! больше не конфликт для меня! (также нет обновлений или дополнительных загрузок)

6

Измените файл eclipse.ini и установите для параметра максимальной памяти значение

-Xmx1024m

Затем перезагрузите компьютер.

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

  • 1
    Ничего связанного, предоставление большего количества памяти не решает проблемы зависимости
6

После прочтения ответа Terrys об удалении каталога bin и Larrys о местонахождении каталога ANT:

Я переместил файлы, расположенные в моей директории BIN проектов, в BIN/CLASSES и начал работать.

Изменить 1 Затем не удалось выполнить второй запуск... doh

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

Изменить 3 Я заметил из своих резервных копий, что в каталоге BIN и BIN/CLASSES действительно есть дубликаты файлов.

Итак, ответ: не иметь файлов в обоих местах. По крайней мере, для меня это сработало.

  • 0
    Постарайтесь уменьшить количество ответов на: Полезное заключение, сопровождаемое подтверждающими фактами . Избегайте повествования истории AMAP; Люди склонны отмечать это, думая, что это «не ответ».
  • 0
    приветствует это, любая помощь в разъяснении моих высказываний приветствуется
6

Я столкнулся с этим, когда я обновил его с 14 до 15, и чтобы заставить его работать, я просто удалил папку .eclipse(вместе с моими настройками) и повторно установил adt 15.

5

У меня есть несколько проектов библиотек с тем же именем пакета, которое указано в AndroidManifest (поэтому никакие дублированные имена полей не генерируются R.java). Мне пришлось удалить любые разрешения и действия из AndroidManifest.xml для всех проектов библиотеки, чтобы удалить ошибку, поэтому Manifest.java не создавался несколько раз. Надеюсь, это может помочь кому-то.

5

Решение для меня:

  • НАЗАД ВАШЕГО КОДА!
  • Перейдите в рабочую область проекта (не ваш проект) и выполните следующие команды:

    dev1: рабочее пространство $cd ~/Documents/workspace/.metadata/.plugins/ dev1: рабочее пространство $rm -rf org.eclipse.core.resources

  • Перейдите в каталог Eclipse и введите следующую команду:

    dev1: eclipse $./eclipse clear

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

Точная ошибка, которую я получал: [2012-02-07 14:15:53 ​​- Dex Loader] Невозможно выполнить dex: несколько файлов dex определяют Landroid/support/v4/view/PagerAdapter; [2012-02-07 14:15:53 ​​- ProjectCloud] Не удалось выполнить преобразование в формат Dalvik: невозможно выполнить dex: несколько файлов dex определяют Landroid/support/v4/view/PagerAdapter;

5

Обновление ADT R14 изменяется, когда классы переходят в каталог bin/classes (см. http://tools.android.com/recent/buildchangesinrevision14). Если вы используете ANT, вы должны изменить путь для своих классов из bin в bin/classes. Это сработало для меня.

  • 0
    Я использую Eclipse. Знаете ли вы, где вы меняете путь к классам в Eclipse?
4

[Решено для меня]

удалив дубликат библиотеки "JAR файл", затем удалите файл BuildConfig.java, очистите проект и его работу.

4

Я столкнулся с одной и той же проблемой, после чего увидел, что при нажатии моего приложения несколько файлов jar, которые были загружены дважды, и, следовательно, многократная ошибка dex. Просто перейдите к своим свойствам проекта → Java Build Path и попробуйте снять флажок, который загружается дважды.

4

Я преобразовал проект небиблиотеки в проект библиотеки, но у него был ранее созданный файл jar в папке libs. Удаление этого файла jar заставило эту ошибку уйти.

4

Попробовав все другие предложения без везения, я удалил все содержимое каталога "bin" моих проектов, а затем снова запустил eclipse и работал.

  • 0
    Нет, это не так :(
3

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

Но на этот раз никто из них не работал, поэтому я удалил файл .jar проекта библиотеки. и перестроить проект библиотеки и приложения.

И на этот раз это сработало!

3

Убедитесь, что "android-support-v4.jar" не отмечен на вкладке Заказ и экспорт в пути сборки Java

Выполните следующие действия:

  • Свойства проекта
  • Путь сборки Java
  • Заказ и экспорт
  • Снимите флажок "android-support-v4.jar"
3

Я столкнулся с той же проблемой. Проблема, я обнаружил, что у меня есть проект библиотеки, в этом файле манифеста проекта нет свойства targetSdkVersion. Я добавил это свойство в теге (uses-sdk). Затем очистите мой проект. Теперь мое приложение работает нормально.

3

У меня была аналогичная проблема, когда я добавил ActionBarSherlock в качестве библиотеки в моем проекте. Eclipse ADT v21.0 предварительно созданных файлов dex, предположительно, для более быстрого построения проекта. Эти файлы dex были такими же, как некоторые из файлов jar в моей папке lib. Так что просто держите одну и удаляйте другую. Я удалил те, что были в папке lib, когда файлы с расширением были созданы автоматически.

3

Попробуйте удалить R.java и позволить eclipse повторно сгенерировать его.

  • 0
    Спасибо Бласковичу, но не повезло.
  • 5
    это не правильное решение
Показать ещё 1 комментарий
2

Это происходит, когда в нашем приложении у нас есть папка libs с gson jar (например: gson-2.2.4.jar). В свое время наша библиотека Google Play Service уже имеет Gson.

я удалю его из своего приложения и its work fine now.

2

Найден другой сценарий, в котором эта проблема возникает: Проблема заключалась в том, что папка libs использовалась в качестве источника в настройках проекта, поэтому она экспортировалась дважды. Разрешено щелчком правой кнопки мыши по папке libs → Путь сборки → Удалить из пути сборки

  • 0
    Если библиотека импортируется несколько раз, эта ошибка произойдет. Проверьте путь сборки Java, если есть несколько импортов одного и того же файла .jar.
2

НЕ ВЫШЕИЗЛОЖЕННЫЙ МЕТОД, РАБОТАЕМ ДЛЯ МЕНЯ, НО МИН РАБОТАЕТ КАК ШАРМ!

Проблема возникает, когда пользователь создает зависимую библиотеку с eclipse. Итак, чтобы получить решение

Шаг 1: Удалите библиотеку (например, проект библиотеки поддержки v4 или v13) из Eclipse с постоянно удаленным источником рабочей области

Шаг 2: Повторно импортируйте библиотеку и включите ее в свой проект

Шаг 3: Очистить и перестроить

СДЕЛАНО!

1

Это был лучший результат, когда я искал эту ошибку в Google.

Хотя вопрос не задает вопрос о том, как решить эту проблему в отношении React Native, я думал, что поделюсь тем, кто попадает сюда и использует React Native.

В корневом прогоне проекта:

  • cd android && ./gradlew clean [Mac - Bash Terminal]
  • cd android & gradlew clean [Windows - Командная строка]

Затем react-native run-android для сборки и запуска снова.

1

Я решил эту проблему в своем проекте, удалив библиотеку:

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

  • 0
    Кажется глупым, но я столкнулся с тем же, по-видимому. Устранение ошибки зависимости Я добавил банку и забыл удалить зависимость в build.gradle
0

Если вы используете 'com.google.android.gms: play-services' Вы можете добавить то, что вам действительно нужно, чтобы посмотреть следующий список:

Google+ com.google.android.gms:play-services-plus:10.0.1

Вход в аккаунт Google com.google.android.gms:play-services-auth:10.0.1

Действия Google, базовая клиентская библиотека com.google.android.gms:play-services-base:10.0.1

API адресов Google com.google.android.gms:play-services-identity:10.0.1

Инфраструктура приложений Firebase com.google.firebase:firebase-appindexing:10.0.1 Гугл Аналитика com.google.android.gms:play-services-analytics:10.0.1

Google Awareness com.google.android.gms:play-services-awareness:10.0.1

Google Cast com.google.android.gms:play-services-cast:10.0.1

Облачные сообщения Google com.google.android.gms:play-services-gcm:10.0.1

Гугл Диск com.google.android.gms:play-services-drive:10.0.1

Google Fit com.google.android.gms:play-services-fitness:10.0.1

Распознавание местоположения Google и активность com.google.android.gms:play-services-location:10.0.1

Карты Гугл com.google.android.gms:play-services-maps:10.0.1

Объявления Google для мобильных устройств com.google.android.gms:play-services-ads:10.0.1

Google Адреса com.google.android.gms:play-services-places:10.0.1

Мобильное видение com.google.android.gms:play-services-vision:10.0.1

Google поблизости com.google.android.gms:play-services-nearby:10.0.1

Google Panorama Viewer com.google.android.gms:play-services-panorama:10.0.1

Службы Google Play Game com.google.android.gms:play-services-games:10.0.1

Защитная сетка com.google.android.gms:play-services-safetynet:10.0.1

Android Pay com.google.android.gms:play-services-wallet:10.0.1

Android Wear com.google.android.gms:play-services-wearable:10.0.1

0

Разделение службы Google Play может помочь вам: https://developers.google.com/android/guides/setup#split

поэтому вместо добавления только игровых сервисов:

compile 'com.google.android.gms:play-services:7.5.0'

вы добавляете только то, что вам нужно:

// Google Maps only
compile 'com.google.android.gms:play-services-maps:7.5.0'
0

перейдите к \bin\dexedLibs и удалите все банки уже удаленных библиотек, затем очистить

0

Убедитесь, что папка bin не находится в пути сборки.

  • 0
    Можете ли вы объяснить, как удалить папку bin из пути сборки?
  • 0
    Если это так, у него есть кнопка удаления на 4 вкладках окна Конфигурация пути сборки.
0

Проблема в том, что "Android Dependencies" сохраняют ссылку на старый SDK AdMob даже после:

  • удалить старый admob sdk из пути сборки
  • ant clean
  • eclipse clean
  • удалить папки bin и gen вручную
  • закрыть/открыть eclipse
  • обновления sdk tools
  • update adt

Решение состоит в том, чтобы удалить AdMob SDK JAR с вашего компьютера, а не только из проекта.

0

Эта ошибка возникла у меня, когда я импортировал файл .jar(на самом деле это был httpmime-4.3.jar) и попытался его использовать. Для меня решение было простым: я удалил файл .jar из папки libs и удалил его из Order and Export. Удалил проект снова, он сработал, поэтому я снова добавил файл .jar, и он наконец-то был в порядке.

0

Не удалось выполнить преобразование в формат Dalvik: невозможно выполнить dex: несколько файлов dex определяют Lcom/google/zxing/BarcodeFormat;

Проводя этот ответ для тех, кто получает эту ошибку в отношении плагина сканера штрих-кода от zxing.

Просто удалите файл jar в папке libs. Должен быть проект/libs/com.google.zxing.client.android.captureactivity.jar

0

В моем случае я удаляю файл ".apk" в каталоге "src/com/...", очищаю проект и запускаю.

Я пробовал все предыдущие предложения и не работал у меня!

0

У меня была такая же проблема не удалось выполнить файлы multipledex в android --lorg\xhtml\CSS

я удалил файлы с двумя внешними банками в папке lib - core-renderer-3043e0f89ffb2.jar

core-renderer-minimal-e70d6a.jar, и мой проект снова построен отлично...

0

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

0

Я получил то же сообщение об ошибке с проектом GooglePlayService в проекте google-play-services.jar.

Мы используем maven, поэтому я должен добавить библиотеку в свой локальный репозиторий maven. (mvn install: install-file -Dfile = xxx)

Теперь библиотека дважды находится в "Java Build Path" → Libraries.

  • один раз в Android Dependencies
  • и один раз в Maven Dependencies.

Чтобы устранить проблему, мне нужно удалить библиотеку из каталога google-play-services_lib/libs (банка используется автоматически)

0

Для меня я указал на файл jar в моем встроенном патче, который больше не был на этом пути!

0

У меня были две связанные, но не идентичные библиотеки guava в каталоге /libs, после того как я удалил один из них, проблема исчезла.

Ещё вопросы

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