UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define
我在使用Android Studio在Android应用上尝试使用Google Play服务时遇到了麻烦。
我已经尝试了一切,仍然无法正常工作。
这是错误。
1 | Execution failed for task ':app:dexDebug'. |
com.android.ide.common.internal.LoggedErrorException: Failed to run command:
/Users/jghg/Desktop/My App/Android/SDK/android-sdk-mac_86/build-tools/19.0.1/dx --dex --output /Users/jghg/Desktop/My App/Eureka/UDA/app/build/libs/app-debug.dex /Users/jghg/Desktop/My App/Eureka/UDA/app/build/classes/debug /Users/jghg/Desktop/My App/Eureka/UDA/app/build/dependency-cache/debug /Users/jghg/Desktop/My App/Eureka/UDA/app/build/pre-dexed/debug/classes-08979151dd1373bd3f799299d93376d22d4afa46.jar /Users/jghg/Desktop/My App/Eureka/UDA/app/build/pre-dexed/debug/classes-167b9d3c5d689abe004c3fa5b0bcb945d3f0fc8e.jar /Users/jghg/Desktop/My App/Eureka/UDA/app/build/pre-dexed/debug/google-play-services-ec20f8af7bb457c5095cae1afa0cee722582f198.jar /Users/jghg/Desktop/My App/Eureka/UDA/app/build/pre-dexed/debug/support-v4-13.0.0-473d85b8d55c88bfed3404072e6c132f96543429.jar /Users/jghg/Desktop/My App/Eureka/UDA/app/build/pre-dexed/debug/support-v4-19.0.1-861cc05365a0e9262c764da37d61e3f93dc16de6.jar /Users/jghg/Desktop/My App/Eureka/UDA/app/build/pre-dexed/debug/support-v4-19.0.1-dcc11377c764caea791f711123b8b678f876c3b6.jar /Users/jghg/Desktop/My App/Eureka/UDA/app/build/pre-dexed/debug/twitter4j-async-3.0.5-0904cb320186fb23a9a9bf25a048c5bc4ec07bc2.jar /Users/jghg/Desktop/My App/Eureka/UDA/app/build/pre-dexed/debug/twitter4j-core-3.0.5-41d2d5805e2d90cf77813a126306c4cbe22583ae.jar /Users/jghg/Desktop/My App/Eureka/UDA/app/build/pre-dexed/debug/twitter4j-examples-3.0.5-adc1ee9b037c8061429560e6a5fe89ce8e502db6.jar /Users/jghg/Desktop/My App/Eureka/UDA/app/build/pre-dexed/debug/twitter4j-media-support-3.0.5-37d138cdc631738d13ddb6f4d34c560a9cd8e048.jar /Users/jghg/Desktop/My App/Eureka/UDA/app/build/pre-dexed/debug/twitter4j-stream-3.0.5-c96c138ea216b25631a1a8b47520ecaf33f288d8.jar
Error Code:
2
Output:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Lcom/google/ads/AdRequest$ErrorCode;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:533)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287)
at com.android.dx.command.dexer.Main.run(Main.java:230)
at com.android.dx.command.dexer.Main.main(Main.java:199)
at com.android.dx.command.Main.main(Main.java:103)
谢谢。
最好的祝福。
如果在build.gradle的依赖项中包含多个相同的库/目录,则会发生此错误。好的,假设你有一个看起来像这样的App结构:
所以你有主"应用程序",然后你有一堆子应用程序/模块/库。这些库是:1)
我叫Gene,这就是为什么有这些"基因"库的原因。
在
1 2 3 4 5 6 7 8 | dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.android.support:appcompat-v7:21.0.0' compile project(':libraries:gene_test_library') //compile project(':libraries:genes_nine_old_androids_library') compile project(':libraries:swipe_list_view_library') } |
在
1 2 | dependencies { } |
在
1 2 3 4 | dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:21.0.0' } |
在
1 2 3 4 5 | dependencies { compile 'com.nineoldandroids:library:2.4.0+' compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:21.0.0' } |
这行代码
所以,让我说我取消注释
在
好吧,在
1 2 3 4 5 6 7 8 9 | dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.android.support:appcompat-v7:21.0.0' compile project(':libraries:gene_test_library') ***compile fileTree(dir: 'libs', include: ['*.jar'])*** ***compile 'com.android.support:appcompat-v7:21.0.0'*** compile project(':libraries:swipe_list_view_library') } |
注意现在
您的Google Play服务库正在从项目的其他依赖项中导出,并且在编译时dex编译器会混淆。
如果您正在使用Gradle,那么在项目的build.gradle中包含它应该排除将支持库导出到您的主项目中。
1 2 3 4 5 6 7 8 9 10 | apply plugin: 'android' apply plugin: 'crashlytics' /** Must exclude exported support jars from dependencies, or get dex duplicate class error. * we're **/ configurations { all*.exclude group: 'com.android.support', module: 'support-v4' all*.exclude group: 'com.google.android.gms', module: 'play-services' } |
如果您正在使用andoid studio构建系统。然后你应该去File - > project structure并禁用 - > modules。浏览每个模块并单击依赖选项卡,取消选中支持库和Google Play服务库的导出列。
如果您需要更多帮助,请发表评论。
如果您在build.gradle中导入了相同库的不同版本,而在其中一个库中导入了不同版本,则也可能发生这种情况。例如,Google Play商店服务要求您让它们都引用我的相同版本:
app build.gradle
然而:
module / library build.gradle
将我的应用程序版本升级到7.8.0解决了这个问题