我试图用一些预编译的本机库构建android应用程序:liba.so和libb.so.1.2.3
库放在jniLibs子目录中。构建APK文件后,只包含liba.so,但不包含libb.so.1.2.3。
结果是可预测的。应用程序在开始时崩溃。
如何处理构建脚本以将jniLibs中的所有文件包含到APK中?
不幸的是我不再为Android开发,所以我无法测试这个,但我知道Gradle,这可能适合你。查看Android DSL docs,您可以更改jniLibs
文件夹上的过滤:
android {
sourceSets {
main {
jniLibs.filter.include("**/*")
}
}
}
让我知道这个是否奏效!
由于在^.+\\.so$
中使用本机库正则表达式Android Gradle plugin,使用.so
文件夹不可能包含除jniLibs
文件之外的任何内容。即使你以某种方式将库添加到APK,Android上的动态加载器也是very limited,很可能无法加载它们。
最好的办法是通过重命名库并在链接之前更改其内部soname
来完全删除该版本。
只需在app / src / main中添加jniLibs文件夹,它就会在apk中包含.so文件。
/app/src/main/armeabi/*.so文件