17

Я знаю, что много проблем с dex сообщалось много раз раньше, но ни одно из решений, похоже, не работает в моем случае.Невозможно выполнить dex: несколько файлов dex определяют Lbolts/AggregateException

консоли:

Unable to execute dex: Multiple dex files define Lbolts/AggregateException; 
    Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lbolts/AggregateException; 

Одним из популярных решений отменяя выбор контейнера "андроид частных библиотек из buildpath. Я не могу этого сделать, потому что в этом контейнере есть несколько библиотек.

Другое решение - это разметка любой дублированной библиотеки, явно добавленной в форме .jar. У меня нет таких библиотек.

Дубликат библиотека в моем случае: android-support-v7-appcompat.jar Я его (прямые ссылки из папки SDK) в этих двух контейнерах:

1.) Android Частные библиотеки

2.) Android Зависимости

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

EDIT: N.B. Когда я добавляю в проект проект android-support-v7-appcompat library_project, он входит в оба контейнера. Должен быть какой-то способ, который входит только в один.

Может ли кто-нибудь помочь мне, как я могу это сделать?

screenshot

screenshot2 (unable to delete)

+0

Пожалуйста убедитесь, что ни одна из ваших зависимостей уже не включает поддержку android-support-v7-appcompat.jar. Кроме того, вы можете увидеть в дереве слева от скриншота, что есть два элемента android-support-v7. – chteuchteu

+0

Я понимаю это уже. проблема в том, что я не могу удалить этот дублирующий файл jar из любого контейнера. единственный вариант, который я получаю, - удалить весь контейнер (Android Dependencies или частные библиотеки Android) Если вы имеете в виду, что я должен удалить его из папки dexedLibs, это не поможет. Они снова появятся в следующий раз, когда я скомпилирую. Это исполняемые байт-коды –

+1

«Но я также не могу удалить только этот дублирующий файл .jar из обоих контейнеров». Почему это? Вы пытались удалить его из обоих контейнеров и добавить его вне их в виде отдельной библиотеки? – chteuchteu

ответ

21

решаемые ИНАЧЕ

bolts-android библиотека была реальная проблема здесь. Были две разные версии, из-за которых возник конфликт. Библиотека FacebookSDK приносит bolts-android-1.1.2, а android-support-v7-appcompat приносит bolts-android-1.1.4.

Я немаркировал контейнер частных библиотек Android в проекте библиотеки FacebookSDK, который содержал bolts-android-1.1.2. В результате у моего проекта теперь была только одна версия, bolts-android-1.1.4, урегулирование конфликта. Теперь это нормально.

Кроме того, получается, что дубликаты android-support-v7-appcompat записей не были проблемой.

+0

Да, я обнаружил, что несоответствие версии довольно подозрительно, но что вы подразумеваете под деблокировкой. Вы имеете в виду удалить из пути сборки? – reubenjohn

+0

Да, но вы знаете, что ... я должен отменить его EVERYTIME, я открываю eclipse.:/Еще не финансировал это решение:/Я думаю, что это ошибка затмения или что-то –

+2

Удаление болтов-андроида и библиотек поддержки Android из основного проекта работало на меня. :) – vinesh

7

Я столкнулся с этим недавно в своем родном проекте, вы можете перейти в свою папку Android вашего проекта. и в терминале нажмите эту команду «./gradlew app: dependencies», чтобы увидеть дерево зависимостей. Я нашел два пакета для андроидных болтов под фейсбуком sdk. если вы исключаете этот пакет из facebook sdk, все будет работать нормально снова

compile ('com.facebook.react:react-native:+') { 
    exclude group: 'com.parse.bolts', module: 'bolts-tasks' 
} 
+1

Спасибо Хасан, моя проблема такая же, но с куполом разных пакетов. Кажется, что нарекательно использовать какую-то другую версию зависимостей на ' «response-native-firebase-analytics» и «react-native-fcm», и этот разный make dexDebug не удалось выполнить в моем проекте. Также использование некоторых «dexOptions», таких как «preDexLibraries», очень полезно для поиска того, что пакет имеет дублируемую версию. Возможно, это лучшее решение изменить версию этого пакета в package.json на то, что соответствует в градиенте, вместо исключения какого-либо пакета в главном приложении build.gradle. –

0

как отредактировал версию обновилась до 0.31.0, если вы хотите интегрировать com.facebook.fresco:animated-gif:0.10.0 который имеет com.parse.bolts имеет хорошо, вы можете сделать так:

compile ('com.facebook.react:react-native:+') { 
    exclude group: 'com.parse.bolts', module: 'bolts-tasks' 
} 
compile ('com.facebook.fresco:animated-gif:0.10.0'){ 
    exclude group: 'com.parse.bolts', module: 'bolts-tasks' 
} 
2

Это может произойти при добавлении facebook SDK для Android, вы можете решить с:

compile ("com.facebook.android:facebook-android-sdk:4.1.0") { 
    exclude group: 'com.parse.bolts', module: 'bolts-android' 
} 
Смежные вопросы