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

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

-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 хотел нажать обновление инструментов платформы, но тогда я не смог его использовать вообще и т.д.

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

Ответ 2

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

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

Ответ 3

Вы можете:

  • Удалите папки <.settings>, <bin>, <gen> и файлы <.classpath>, <.project> и <project.properties>.

  • Удалите проект в Eclipse (правая кнопка, <Delete>), не удаляя исходные файлы.

  • Создайте новый проект для Android и выберите <Create project from existing sources> из предыдущих источников.

  • Импортируйте внешние библиотеки, если это необходимо в пути сборки.

Он должен решить эту неприятную проблему.

Ответ 4

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

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

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

[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;

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

Ответ 5

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

com/XXX/XXX

к

classes/com/XXX.

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

Ответ 6

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

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

Ответ 7

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

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

Ответ 8

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

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