Ошибка с несколькими файлами dex при компиляции с помощью ant или Eclipse

#android #ant #dex

#Android #ant #dex

Вопрос:

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

 -dex:
   [dex] Converting compiled files and external libraries into 
         /Users/rob/Repos/my_app/bin/classes.dex...
    [dx] 
    [dx] UNEXPECTED TOP-LEVEL EXCEPTION:
    [dx] com.android.dx.util.DexException: Multiple dex files define 
         Lcom/robaldred/myapp/About$1;
 

Я пробовал очищать и перестраивать, я также пробовал в Eclipse, но он выдает ту же ошибку.
У кого-нибудь есть идеи? Сейчас я нахожусь у кирпичной стены.

Ответ №1:

Я потратил часы на очистку, создание новых проектов, удаление — переустановку sdk … ничего не получалось. У меня также не было никакого проекта библиотеки (у меня просто было несколько файлов jar в lib). Однако, в конце концов, я исправил это, и мои шаги были:

  • Найдите и очистите все файлы .apk (у меня были некоторые в папке .svn … grr.. какой-то разработчик добавил несколько папок, связанных с сборкой, в svn)
  • удалите bin и gen.
  • В свойствах проекта eclipse удалите ссылку на библиотечные банки, нажмите ok. Затем снова добавьте их обратно. У меня была скомпилированная java-библиотека jar. Я не знаю, почему мне пришлось удалить и добавить его обратно, но это, безусловно, было необходимо.

Комментарии:

1. Работал для меня без удаления jars.

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

Ответ №2:

Вчера что-то случилось с моей системой (и еще одно здесь, на работе), Когда SDK хотел нажать обновление инструментов платформы, но затем я вообще не смог его использовать и т. Д.

В итоге я убрал свой SDK и переустановил его, после чего все работало так, как было всегда. У меня не было вашей конкретной проблемы с dex, но я подозреваю, что вчерашнее нажатие на обновление нарушило многие вещи. Удачи.

Комментарии:

1. Эй, да, это кажется вероятным. Я переустановил все sdk и инструменты, похоже, проблема решена. Похоже, что обновление до r14 вызывает проблемы с существующими рабочими пространствами. Я бы ожидал больше сообщений, хотя, может быть, это что-то конкретное, странное. новая установка r14 в порядке. Спасибо за ваш вклад

Ответ №3:

Вы можете:

  • Удалите папки <.settings> <bin> , <gen> , и файлы <.classpath> , <.project> и <project.properties> .
  • Удалите свой проект в Eclipse (правая кнопка <Delete> ), не удаляя исходные файлы.
  • Создайте новый проект Android и выберите <Create project from existing sources> из своих предыдущих источников.
  • Импортируйте внешние библиотеки, если это необходимо, в путь сборки.

Это должно решить эту досадную проблему.

Ответ №4:

Будьте очень осторожны со всеми исходными файлами, которые вы прикрепляете / имеете в своем проекте. Я обнаружил эту проблему в двух ситуациях:

  1. Когда у меня есть две разные библиотеки поддержки Android
  2. Когда я случайно поместил в прошлом какой-то Facebook src не как библиотеку, а непосредственно в мой каталог src

Итак, все ответы, в которых говорится, что вы не должны помещать свой bin / directory в путь к классу, также верны, но в ситуации, когда у вас ошибка типа:

 [2013-08-02 20:22:03 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/facebook/android/AsyncFacebookRunner$1;
[2013-08-02 20:22:03 - Activity] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom/facebook/android/AsyncFacebookRunner$1;
 

вы должны искать одинаковые банки в project / libraries (в большинстве случаев это должно быть основано на среде Android Eclipse) или просматривать все источники, прикрепленные к проекту, чтобы найти многократное появление (как в примере кода выше) класса com.facebook.android.AsyncFacebookRunner

Ответ №5:

Я думаю, что каталог в bin меняется с

 com/XXX/XXX
 

Для

 classes/com/XXX.
 

Вы можете очистить свой проект и решить его.

Комментарии:

1. очистка не устраняет эту конкретную проблему, как упоминалось в первоначальном вопросе

Ответ №6:

Я видел ту же проблему. Если вы используете Android Studio, вам необходимо убедиться, что у вас нет папок ‘bin’ или ‘gen’, включенных ни в один из ваших проектов при компиляции.

После удаления этого я смог успешно скомпилировать

Ответ №7:

Если у вас возникли проблемы из-за нескольких файлов DEX

Удалите всю целевую папку и создайте проект заново. Это не повлияет на ваш проект, потому что все в целевой папке создается заново.

Ответ №8:

Измените FileTree реализации (включите: [‘.jar’], dir: ‘libs’) на предоставленный FileTree (включите: [‘.jar’], dir: ‘libs’) в вашем приложении gradle.build> зависимости.

Убедитесь, что она также изменилась в настройках вашего модуля> Зависимости {include= [* jar] dir= libs} . Рядом с ним должна быть указана область действия, а не реализация.