Не може да се изпълни dex: Множество dex файлове дефинират Lcom/facebook/android/AsyncFacebookRunner$1;

Имам приложение за Android, което извиква jar lib, да речем b.jar. Тази b.jar lib. след това извиква facebook sdk lib. Когато компилирам приложението си при тази ситуация, то винаги казва

Не може да се изпълни dex: Множество dex файлове дефинират Lcom/facebook/android/AsyncFacebookRunner$1; Неуспешно преобразуване във формат Dalvik: Не може да се изпълни dex: Множество dex файлове дефинират Lcom/facebook/android/AsyncFacebookRunner$1;

Използвах няколко дни, за да го накарам да работи, но не успях да се справя с този проблем. Някой знае ли как да реши този проблем?


person Jacky Lam    schedule 29.03.2013    source източник
comment
това вероятно е защото един и същ буркан е включен повече от веднъж във вашия проект. Как се включва facebook sdk lib, буркан ли е? Ако е така, уверете се, че вашият проект го включва само веднъж (че не се появява в референтни библиотечни проекти или пътеки за изграждане и т.н.).   -  person ab11    schedule 29.03.2013
comment
Включвам проекта facebook lib от Properties-›Android-›Library-›Add to my b lib project. След това включвам проекта b lib към основното си приложение от Properties-›Android-›Library-›Add. Срещам този проблем, когато ги настройвам в тази ситуация. Някой има ли идея за решаването му?   -  person Jacky Lam    schedule 30.03.2013
comment
@JackyLam Здравейте, изправен съм пред същия проблем. Надявам се, че сте решили проблема? Моля, споделете как го направихте?   -  person Erma Isabel    schedule 18.07.2013


Отговори (3)


Отидете на свойствата на проекта и след това пътеката за изграждане на Java -> Библиотеки -> Премахване на зависимостите на Android и OK, след това стартирайте проекта си

Препоръчано от: https://stackoverflow.com/a/15247670/1585773

Работи перфектно за мен.

person May    schedule 05.08.2013
comment
Ако Facebook sdks се споменава като библиотека, тогава ако премахнете зависимостите на Android от пътя за изграждане на java, тогава проектът няма да се компилира, тъй като facebook jar се появява в зависимостите на Android - person Jasper; 24.06.2015

Всички отговори са работа. Те не решават първопричината за проблема. Ако погледнете структурата на вашия проект, има FacebookSDK проект и вашия проект. И в двата проекта имате пакет com.facebook.android (първият java файл е AsyncFacebookRunner), който включва същите java файлове. Очевидно множество dex файлове ще дефинират вашите клас файлове и ще получите грешка.

Решение - Премахнете com.facebook.android от вашия основен проект (не FacebookSDK).

person Sandeep Taneja    schedule 30.04.2014
comment
+1 за всички отговори са заобиколно решение. Ровя се в интернет и не намирам нищо друго освен заобиколни решения. Бих убил за статия за това как работи дексирането на множество проекти - person slezica; 10.06.2015

За мен това беше причинено от конфликт с AddThis SDK, тъй като AddThis SDK включва частично копие на Facebook SDK, вграден в него. И така класът com/facebook/android/AsyncFacebookRunner беше дефиниран два пъти.

Успях да разреша това с помощта на тези отговори:

Android AddThis sdk + Facebook sdk не се вгражда в Android Студио

Android Studio - Приложението се срива на AddThis.jar - Съобщение „Източници не са намерени“

По-конкретно, като използвате тази стъпка от втория отговор:

Използвана е команда zip -d addthis0.0.8.jar com/facebook/* в терминала за изтриване на Facebook файловете от addthis0.0.8.jar

Тъй като използвам Eclipse, не трябваше да правя нито една от другите стъпки в тези отговори.

person Saxon Druce    schedule 30.10.2014