使用Bmob时遇到的Android依赖包冲突(Gson、Okhttp)

第一次遇到这个问题是在使用Bmob后端云的时候,同时使用了bmob-sdk和retrofit2。
这是我最开始添加的依赖:

    compile 'cn.bmob.android:bmob-sdk:3.5.1'
    compile('com.squareup.retrofit2:retrofit:2.1.0')
    compile('com.squareup.retrofit2:converter-gson:2.1.0')
    compile('com.squareup.retrofit2:adapter-rxjava:2.1.0')

不管是Clean还是Rebuild都是正常的,但是当我点击Run App的时候就会出现

Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: okhttp3/Address.class

亦或者

Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/google/gson/annotations/Expose.class

不过这两问题的本质都是一样的

询问了官方人员半天,原来是依赖包出现了相同类导致的冲突。解决的方案是将包相同的类去除,最后依赖的写法如下

    compile 'cn.bmob.android:bmob-sdk:3.5.1'
    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' }
    compile('com.squareup.retrofit2:adapter-rxjava:2.1.0')
            { exclude group: 'io.reactivex' 
            exclude group: 'com.squareup.okhttp3' }

关于如何查找相同类,以及如何查找group,请看我的另一篇文章:

Android Studio中如何解决重复依赖导致的
app:transformClassesWithJarMergingForDebug

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值