无法执行dex:多个dex文件定义Lbolts / AggregateException

时间:2014-12-29 18:52:27

标签: java android android-support-library android-appcompat bolts-framework

我知道之前已经多次报告了多个dex问题,但是在我的情况下,似乎没有一个解决方案可行。

控制台:

    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取消标记“Android私有库”容器。我不能这样做,因为我需要的容器中还有一些库。

另一个解决方案是取消标记以.jar形式显式添加的任何重复库。我没有这样的图书馆。

我的案例中的重复库是:android-support-v7-appcompat.jar 我在这两个容器中有它(直接从sdk文件夹引用):

1。)Android私人图书馆

2。)Android Dependencies

问题是我无法完全解开这两个容器中的任何一个,因为它们都包含其他必需的库。但我也无法从任何容器中删除这个重复的.jar文件。

修改 注:当我将android-support-v7-appcompat library_project添加到我的项目时,它进入两个容器。必须有某种方式只进入一个。

任何人都可以帮助我如何做到这一点吗?

screenshot

screenshot2 (unable to delete)

4 个答案:

答案 0 :(得分:22)

解决了一些

bolts-android库是真正的麻烦。有两个不同版本的导致冲突。 FacebookSDK库带来bolts-android-1.1.2android-support-v7-appcompat带来bolts-android-1.1.4

我在FacebookSDK库项目中取消标记了Android私有库容器,其中包含bolts-android-1.1.2。结果,我的项目现在只有一个版本bolts-android-1.1.4,解决冲突。它现在运行良好。

另外,事实证明,重复的android-support-v7-appcompat条目不是问题。

答案 1 :(得分:7)

我最近在我的本机项目中遇到过这个问题,你可以去你项目的android文件夹。并在终端点击此命令“./gradlew app:dependencies”以查看依赖树。我在facebook sdk下找到了两个用于android螺栓的软件包。如果你从facebook sdk中排除这个包,那么事情会再次正常工作

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

答案 2 :(得分:3)

将Facebook SDK添加到Android时可能会发生这种情况,您可以通过以下方式解决:

compile ("com.facebook.android:facebook-android-sdk:4.1.0") {
    exclude group: 'com.parse.bolts', module: 'bolts-android'
}

答案 3 :(得分:0)

由于反应版本已更新为0.31.0,当您要整合com.facebook.fresco:animated-gif:0.10.0具有com.parse.bolts的{​​{1}}时,您可能会这样做:

 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'
}