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