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

Java 无法执行dex:多个dex文件定义Lbolts/AggregateException,java,android,android-support-library,android-appcompat,bolts-framework,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; 一个流

我知道以前有很多次关于多个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依赖项


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

编辑: 注意:当我将android-support-v7-appcompat library_项目添加到我的项目中时,它会进入两个容器中。一定有办法,这样就只有一种了

有人能帮我怎么做吗


已解决

android库是这里真正的麻烦。有两种不同的版本导致冲突。
FacebookSDK
库提供了
bolts-android-1.1.2
android-support-v7-appcompat
提供了
bolts-android-1.1.4

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


同样,重复的
android-support-v7-appcompat
条目也不是问题。

我最近在我的react原生项目中遇到了这个问题,您可以转到项目的android文件夹。在终端中,点击此命令“/gradlew app:dependencies”查看依赖项树。我在facebook sdk下找到了两个android Bolt软件包。如果你把这个软件包从facebook sdk中排除,一切都会好起来的

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

由于react版本已更新为0.31.0,当您想要集成
com.facebook.fresco:animated gif:0.10.0
时,您可以这样做:

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

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

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

请检查您的任何依赖项是否尚未包括android-support-v7-appcompat.jar。另外,你可以在截图左边的树视图上看到有两个android-support-v7元素,我已经意识到了这一点。问题是,我无法从两个容器中删除重复的jar文件。我得到的唯一选择是删除整个容器(Android依赖项或Android私有库),如果你的意思是我应该从dexedLibs文件夹中删除一个容器,那没有帮助。它们将在我下次编译时重新出现。它们是可执行字节码,“但我也无法从两个容器中删除这个重复的.jar文件。”为什么?您是否尝试过将其从两个容器中删除,并将其作为单独的库添加到容器外部?我无法从任何容器(或两者)中删除它:(让我试着用正确的方式发布截图,或者我不知道如何发布截图。在builpath窗口中,当我选择一个jar文件时,按钮是灰色的out@chteuchteu查看我在帖子中添加的另一个屏幕截图。另外,在buildpath窗口中,选项显示为灰色。是的,我发现版本不匹配非常可疑,但是你怎么看是指取消标记…你的意思是从构建路径中删除吗?是的。但你知道吗…每次打开eclipse时我都必须取消标记。:/尚未资助解决此问题的方案:/i我认为这是eclipse错误或其他原因。从主项目中删除android和android支持库对我来说很有用。:)但就我而言,我想知道为什么每次打开eclipse时,它都会再次出现;我必须再次删除它。我每次都必须删除一个android库:(从我的gradle.build中删除了螺栓。修复了itThanks Hasan,我的问题是相同的,但与dome不同的软件包。react-native似乎在“react-native firebase analytics”和“react-native fcm”上使用了一些不同的依赖版本,这种不同的做法使dexDebug在我的项目中失败。还使用了一些“dexOptions”,如“preDexLibraries”,非常有帮助。)pful发现wich包有重复的版本。最好的解决方案是将package.json中这些包的版本更改为与gradle运行中的版本匹配的版本,而不是将一些包排除在主应用程序build.gradle中。