在我的一个项目中,我在构建gradle文件时遇到此异常
错误:任务执行失败':emBazaarV4:dexDebug'。
com.android.ide.common.internal.LoggedErrorException:无法运行命令:F:\ AndroidSDK \ build-tools \ 21.1.2 \ dx.bat --dex --no-optimize --output F:\ AndroidStudioWorkspace \ EmBazaarV4 \ emBazaarV4 \ build \ intermediates \ dex \ debug --input-list = F:\ AndroidStudioWorkspace \ EmBazaarV4 \ emBazaarV4 \ build \ intermediates \ tmp \ dex \ debug \ inputList.txt 错误代码:2输出:意外的顶级异常: com.android.dex.DexException:多个dex文件定义 LCOM /谷歌/ GSON / JsonSerializer;在 com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596) 在com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554) 在com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535) 在com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171) 在com.android.dx.merge.DexMerger.merge(DexMerger.java:189)at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454) 在com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)at com.android.dx.command.dexer.Main.run(Main.java:246)at com.android.dx.command.dexer.Main.main(Main.java:215)at com.android.dx.command.Main.main(Main.java:106)
这是我的依赖
dependencies {
compile 'com.facebook.android:facebook-android-sdk:3.22.0'
compile 'com.aviary.android.feather.sdk:aviary-sdk:3.6.3'
compile 'com.android.support:support-v4:21.0.3'
compile 'com.google.android.gms:play-services:+'
compile 'com.squareup.okhttp:okhttp:2.2.0'
compile 'com.squareup.okio:okio:1.1.0'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0'
compile 'com.squareup.retrofit:retrofit:1.9.0'
compile 'com.squareup.picasso:picasso:2.4.0'
compile files('libs/commons-io-2.4.jar')
compile files('libs/crashlytics.jar')
compile files('libs/httpmime-4.1.3.jar')
compile files('libs/jumblr-0.0.8-jar-with-dependencies.jar')
compile files('libs/signpost-commonshttp4-1.2.1.2.jar')
compile files('libs/signpost-core-1.2.1.2.jar')
compile files('libs/simplesocialsharing.jar')
compile files('libs/gcm.jar') }
我已尝试过所有内容但未获取如何排除此多个dex文件。我找到了像这样的v4的解决方案
configurations {
all*.exclude group: 'com.android.support', module: 'support-v4'
}
那么这些错误是否有任何通用解决方案?
答案 0 :(得分:4)
此错误
意外的顶级异常:com.android.dex.DexException:多个dex文件
当您使用同一个库的不同版本时,会发生。
在你的情况下,它发生在gson库中: Lcom / google / gson / JsonSerializer;
检查您的依赖项。例如,OkHttp使用2.2.3版本。 https://github.com/square/okhttp/blob/master/pom.xml#L44
答案 1 :(得分:2)
正如Gabriele所说,TopLevel异常总是由于同一个库的不同版本的冲突而发生。
首先我建议,尽量避免使用尽可能多地添加文件依赖关系,始终尝试从jcenter存储库添加依赖项。看起来gradle会处理冲突的依赖关系。
现在,有一些方法可以避免它:
只使用一个包含所有必需类的版本。像app compact有所有v4支持类,所以你不需要导入v4支持veresion如果你导入appcompact v7。
您始终可以从已编译的依赖项中排除某个包。例如:
//for the package:
dependencies {
compile("com.android.support:support-v4:21.0.3") {
exclude group: 'com.android.support', module: 'support-v4'
}
}
答案 2 :(得分:0)
您在自己的应用中使用的是乳胶管网Google Play服务。最近,您可以在使用它时获得更多粒度。
关注this guide,您只能使用所需的部分。可能这将解决问题。你可以这样使用它:
compile com.google.android.gms:play-services-base:6.5.87
compile <... some other google play services part ...>
您可以阅读this link
中的“部分”的完整列表