融云IM干货丨如何确保 AAR 包中不包含 libc++_shared.so 文件?
使用Gradle脚本来管理依赖,特别是对于直接引用的AAR,可以通过脚本来排除不需要的SO库。对于被开源库引用的AAR,可以找到依赖的缓存位置,然后新建一个空的module,将对应的文件copy进去,进行排除操作。: 修正C++项目的构建脚本,屏蔽掉链接C++ STL动态库的指令,并在项目中的Java代码中去掉加载动态库。这种方法虽然比较繁琐,但可以确保AAR包中不包含不需要的SO文件。文件,从而
为了确保AAR包中不包含libc++_shared.so
文件,可以采取以下几种方法:
-
使用
packagingOptions
排除libc++_shared.so
: 在AAR包的build.gradle
文件中,使用packagingOptions
来排除libc++_shared.so
文件。例如:gradle
android { packagingOptions { exclude 'lib/armeabi-v7a/libc++_shared.so' exclude 'lib/arm64-v8a/libc++_shared.so' exclude 'lib/x86/libc++_shared.so' exclude 'lib/x86_64/libc++_shared.so' } }
这样可以确保在打包AAR时不会包含
libc++_shared.so
文件。 -
静态链接C++ STL库文件: 修正C++项目的构建脚本,屏蔽掉链接C++ STL动态库的指令,并在项目中的Java代码中去掉加载动态库
c++_shared
的代码。这样可以确保AAR包中不会包含libc++_shared.so
文件。 -
手动删除SO文件后重新打包AAR: 如果AAR包已经包含了
libc++_shared.so
,可以手动解压AAR包,删除其中的libc++_shared.so
文件,然后重新打包成AAR。这种方法虽然比较繁琐,但可以确保AAR包中不包含不需要的SO文件。 -
使用Gradle脚本管理依赖: 使用Gradle脚本来管理依赖,特别是对于直接引用的AAR,可以通过脚本来排除不需要的SO库。对于被开源库引用的AAR,可以找到依赖的缓存位置,然后新建一个空的module,将对应的文件copy进去,进行排除操作。
-
替换依赖库: 如果项目中依赖了多个包含
libc++_shared.so
的库,可以尝试替换这些库,或者使用不包含libc++_shared.so
的版本,以避免冲突。
通过上述方法,可以有效地确保AAR包中不包含libc++_shared.so
文件,从而避免在最终的APK中出现重复的SO文件问题。
更多推荐
所有评论(0)