当使用maven导入依赖时,可能会出现不同的依赖包含了同一个jar,运行app的时候,就会报错
Error:Execution failed for task ‘:app:transformDexArchiveWithExternalLibsDexMergerForDebug’.
java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException:
Unable to merge dex
解决的方法是在引入依赖的时候把相同的jar去除掉
比方说,我同时引入了bmob和retrofit2的依赖
compile ('cn.bmob.android:bmob-sdk:3.5.1')
compile ('com.squareup.retrofit2:retrofit:2.1.0')
因为bmob底层也是通过引入okhttp来实现的,所以我报的错是:
Error:Execution failed for task ‘:app:transformClassesWithJarMergingForDebug’.
在AS中,选择以project显示项目,找到最下面的External Libraries
找到bmob-sdk类库:我们发现依赖了okhttp的jar包.
找到retrofit2类库:
如图依次点开之后发现了一个pom.xml,这里面就是关于这个jar的一些配置文件,点开之后发现也依赖了okhttp.jar
没错,这个就是导致报错的原因。
复制里面groupId,到你的app的build.gradle里,找到retrofit2依赖,添加{exclude group: ‘com.squareup.okhttp3’}
把这个groudId的引用去除掉。
implementation('com.squareup.retrofit2:retrofit:2.3.0') {
exclude group: 'com.squareup.okhttp3'
}
如果你有多个重复依赖的话,就按照本文所给出的方法,一个一个去重即可!!!
implementation ('com.squareup.retrofit2:converter-gson:2.3.0'){
exclude group:'com.google.code.gson'
exclude group: 'com.squareup.okhttp3'
//exclude module:'okhttp'
}
您的赞赏是我不断更新的动力,希望能帮到你!