记录代码合并时产生的bug

bug提示:

Error:Execution failed for task ':app:transformClassesWithJarMergingForQh360Release'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/android/internal/http/multipart/PartSource.class

当然,只要是这个问题都是一样的 只要是:java.util.zip.ZipException: duplicate entry

只不过这个问题给出的解决方案几乎没有,找包找了好久。现在给出解决方法:
全局搜索(Studio默认快捷键 ctrl+shift+F)jar包:org.apache.http.legacy
之后就会发现出现好多引用此jar包的地方,有的三方还会使用useLibrary 'org.apache.http.legacy',对于重复的,只保留一个即可。
在我处理这个问题的时候,还出现过SDK里有这个jar,只要定位到SDK路径下optional文件夹目录就会发现org.apache.http.legacy.jar,把这个jar删掉,同时清除optiona.json文件夹下,关于这个jar的相关信息。clean下项目即可

其他相同错误,不同文件解决思路以PartSource.class为例:
双击shift调出搜索搜索PartSource的引用路径,看是不是有多个jar在引用,如果是,全局项目只保留一个,clean即可。
至于怎么只保留一个
方式一:在gradle中加入代码
android{
...
configurations {
all*.exclude module: 'okhttp'
all*.exclude module: 'okio'
all*.exclude group: 'utdid4all'
all*.exclude group:'com.nineoldandroids'
}

以上就是去除了 okhttp utdid4all(相信使用阿里系的童鞋会深受其害) nineoldandroids的重复依赖

方式二:在依赖jar的时候这么操作, exclude 重复的部分

compile('com.squareup.retrofit2:retrofit:2.2.0') { exclude group: 'okhttp3' }

方式三:在依赖的依赖库中设置为私有

将Complie改为Provided
一定是在被依赖的库中操作
比如:主项目app 依赖 库A   两者同事依赖xxx.xxx.xxc  jar 那么 在库A中的依赖代码为:provide xxx.xxx.xxc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值