Ошибка нескольких файлов 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, но выдает ту же ошибку. У кого-нибудь есть идеи? Я сейчас у кирпичной стены.


person Rob    schedule 21.10.2011    source источник


Ответы (8)


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

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

person tarrant    schedule 21.10.2011
comment
Эй, да, это кажется вероятным. Я переустановил все SDK и инструменты, похоже, проблема решена. Похоже, что обновление до r14 вызывает проблемы с существующими рабочими пространствами. Я бы ожидал больше сообщений, хотя, может быть, это что-то конкретное, странное. Свежая установка r14 в порядке. Спасибо за ваш вклад - person Rob; 22.10.2011

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

  • Найдите и очистите все файлы .apk (у меня были некоторые в папке .svn... grr.. какой-то разработчик добавил несколько папок, связанных со сборкой, в svn)
  • удалить бин и ген.
  • Из свойств проекта eclipse удалите ссылку на библиотечные банки, нажмите «ОК». Затем снова добавьте их обратно. У меня была скомпилированная библиотека jar. Я не знаю, почему мне пришлось удалить и добавить его обратно, но это, безусловно, было необходимо.
person Mazed    schedule 28.10.2011
comment
Работал для меня без удаления банок. - person Yoel Gluschnaider; 20.03.2013
comment
В моем случае с этой ошибкой у меня было два внешних банка, которые оба определяли одни и те же классы. Удаление одной из банок из моего каталога libs исправило мою ошибку. - person Adam Rosenfield; 21.12.2013

Ты сможешь:

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

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

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

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

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

person Bengale    schedule 12.12.2011

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

  1. Когда у меня есть две разные банки библиотеки поддержки Android
  2. Когда я случайно поместил в прошлом какой-то 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;

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

person delpierofan    schedule 02.08.2013

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

com/XXX/XXX

to

classes/com/XXX.

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

person user898366    schedule 27.10.2011
comment
очистка не решает эту конкретную проблему, как упоминалось в начальном вопросе - person Rob; 28.10.2011

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

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

person Andrew R    schedule 11.06.2013

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

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

person user3409132    schedule 12.03.2014

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

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

person DavMar    schedule 09.12.2017