通常在项目中正常情形下只会依赖一个,但是so库比较特殊,如果依赖的是三方库中的so冲突,是没有办法识别的,解决方案如下: 举例:我的libc++_shared.so库重复依赖了 1.在app build.gradle文件中配置只依赖一次
android {
//app build.gradle
//IotVideo sdk包含libc++_shared.so,libmarsxlog.so,解决so的冲突如下
//下面意思是只匹配第一个就好了
packagingOptions {
//下面是存放so库的路径,以及so库的文件名和后缀都得写全
pickFirst 'lib/armeabi-v7a/libc++_shared.so'
pickFirst 'lib/arm64-v8a/libc++_shared.so'
pickFirst 'lib/armeabi-v7a/libc++_shared.so'
pickFirst 'lib/arm64-v8a/libc++_shared.so'
}
}
2.远程依赖的三方库,在依赖下载到本地的时候删除多余的库: 找到对应的文件夹
删除上边libc++_shared.so即可,不过在清除缓存重新下载依赖之后需要重新删除
3.下载冲突的三方库的aar包,删除jni里面的so文件重新打包即可,这里笔者在多年前尝试过,就不举例了