问题描述
最近更新了保利威视的视频播放相关sdk,打包编译的时候发现有jar包重复类冲突,message会有 .....duplicate entry: ../../a/a.class 类似的提示,以前很少碰到这种问题,我的想法是引入的三方依赖中其自身引用的jar包有重复导致冲突发生
解决方法
我一开始的解决方法是根据提示,双击shift全局文件搜索,找出重复类所在的jar包
- 如果是无用的主jar包,可直接将它删除
- 如果都是有用的,可以通过exclude将其引用冲突的jar包从依赖中去除
单个依赖中去除
compile ('com.android.support:design:22.2.1')
{
exclude group: 'com.android.support'
}
有多个的情况下,这是在整个构建过程中排除对应得jar包,可以写在dependencies上方
configurations {
all*.exclude group: 'com.android.support'
}
这种方法的缺陷是找jar包有些麻烦,包括他的group,moudle,可以在maven仓库中搜索一下对应jar包配置
ps: 命令行用gradlew app:denpendencies可以列出依赖树,找起来方便一些,还有个gradle view的as插件也可以用
总结起来就是对于gradle的使用过于生疏,有很多好用的方法都没有了解和掌握