Android排除三方库中so库

946 阅读1分钟

通常在项目中正常情形下只会依赖一个,但是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.远程依赖的三方库,在依赖下载到本地的时候删除多余的库: 找到对应的文件夹

image.png

image.png

image.png 删除上边libc++_shared.so即可,不过在清除缓存重新下载依赖之后需要重新删除

3.下载冲突的三方库的aar包,删除jni里面的so文件重新打包即可,这里笔者在多年前尝试过,就不举例了