1、多个模块含有相同的java模块。
对于引用的重复库的文件,去掉重复引用的模块。
1)去掉重复模块
aar中引用重复:
// sophix热修复
compile 'com.aliyun.ams:alicloud-android-hotfix:3.2.6'
compile('com.aliyun.ams:alicloud-android-hotfix:3.2.6') {
exclude(module: 'alicloud-android-utdid')
}
排除掉重复引用的模块 ‘alicloud-android-utdid’
整个模块中的类都排除掉了。
2)去掉重复的分组(aar)
compile ('com.android.support:design:22.2.1')
{
exclude group: 'com.android.support'
}
去掉重复的group名称为com.android.support 的重复引用。
3)两者可以结合使用,只去掉分组中某一模块的重复引用。
4)jar文件类重复引用。
删除重复引用的jar文件
2、so文件重复引用。
多个子模块中(或者)aar依赖库中引用了相同的so文件,导致文件重复。
解决方法:
在app/build.gradle中,对于重复引用的so文件,只需要选取第一个就行。
android{
pickFirst 'lib/armeabi/xxx.so'
}
3、同一个依赖多个版本冲突
同一个依赖不同模块引用不同版本,导致冲突
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.android.support'
&& !details.requested.name.contains('multidex')) {
details.useVersion "$supportlib_version"
}
}
对于同一依赖采用同一版本
4、同一个Jar库冲突引用多次
如果子模块已经包含jar库,app工程删除重复库即可。
删除APP/libs下重复引用的jar文件
5、Jar库中的某些类被重复引用。
支付宝jar中出现过。
方法一:重新解压jar文件,删除重复引用的类。