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

更多相关文章

  1. Android Intent多种传值方式
  2. android实现ftp上传、下载,支持文件夹
  3. android java 检测文件夹(目录)是否存在,不存在则创建
  4. 全局窗口一
  5. Android 创建与解析XML(三)—— Sax方式(源码)
  6. Android BroadcastReceiver两种注册方式区别
  7. 设置android全屏的两种方式
  8. android 创建快捷方式 删除快捷方式 不重复判断快捷方式
  9. Android全局变量

随机推荐

  1. Linux学习第二天-文件系统和简单文件操作
  2. Linux下高频命令分类辑录(基本使用篇)
  3. linux从入门到精通(八)(添加用户)
  4. Linux 64位下Oracle 12CR2安装(二)
  5. Linux命令-定时任务命令:crontab
  6. linux3.1内核移植到S3C2416的过程和问题
  7. 10.32/10.33 rsync通过服务同步 10.34 li
  8. linux watch——重复执行同一命令
  9. linux 创建子进程
  10. linux diff(differential) 命令详解