解决Android端libc++_shared.so库冲突问题

前言

        随着App功能增多,集成的so库也会增多,如果系统中多个so库都使用系统自动生成的libc++_shared.so库,如果多个SDK都有该so包,就会出现报错:

解决Android端libc++_shared.so库冲突问题_第1张图片

解决办法

        如果出现该问题,说明您的项目中有多个SDK共同依赖了C++标准动态库,请在您的主程序build.gradle中增加以下代码:

android {
    packagingOptions {
        pickFirst 'lib/*/libc++_shared.so'
    }
}

        在Android Gradle插件中,packagingOptions用于定义打包apk时的选项。其中,pickFirst是一个针对冲突解决的策略之一。

        具体来说,pickFirst用于指定在打包时遇到冲突时使用哪个文件。当打包过程中出现同名的文件时,如果指定了pickFirst,则会优先使用第一个找到的文件,而其他同名文件则会被忽略。

总结

        网上还有别的方案:删除SDK中的libc++_shared.so文件,这种方式完全不可取,删除后会造成SDK无法编译,或者第三方SDK高度集成的根本无法删除,所以本解决方案才是最可取的。

你可能感兴趣的:(Android,android)