AS添加依赖报错Unable to merge dex

时间:2021-07-06 03:00:08

AS添加依赖报错Unable to merge dex

最近在给项目添加依赖的时候,要给项目导入Bmob的SDK,参照Bmob的官方文档,可以直接在app的build.gradle文件中添加

//Bmob后台依赖
compile 'cn.bmob.android:bmob-sdk:3.5.5'

同时项目也在之前添加了Retrofit等依赖,这样在Build的时候就提示了如下错误:

Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex

之后找打的信息是:添加的依赖有冲突导致无法通过Build,定位问题最终是在Bmob的SDK与原有的retrofit和gson等产生了冲突:

//gson解析库
implementation 'com.google.code.gson:gson:2.8.0'
//retrofit网络请求库
implementation 'com.squareup.retrofit2:retrofit:2.3.0'
implementation 'com.squareup.retrofit2:converter-gson:2.1.0'
implementation 'com.squareup.retrofit2:converter-scalars:2.1.0'

而在Bmob的SDK中,包含如下库:

AS添加依赖报错Unable to merge dex

解决办法:

由于SDK是集成的,一般是无法去定制的,那么,就需要我们在导入自己的额外的依赖的时候,做一个声明,取出我们自添加的依赖中会导致冲突的部分:

在这里就是retrofit里面包含的gson和OKHttp两个库,所以我们在添加retrofit依赖的时候将他们去除不添加在内即可:

compile('com.squareup.retrofit2:retrofit:2.1.0')
        { exclude group: 'com.squareup.okhttp3' }
compile('com.squareup.retrofit2:converter-gson:2.1.0')
        {
            exclude group: 'com.google.code.gson'
            exclude group: 'com.squareup.okhttp3'
        }

之后Clear-Rebuild即可。