我需要将名为“ mylib.so.1”的共享库打包到APK中,但是显然gradle无法识别“ .so.1”扩展名,只有“ .so”,并且在运行时我需要名为“ .so”的库。 so.1“,以避免链接器错误。所有库都位于src / main / jniLibs / $ {ANDROID_ABI}中。
答案 0 :(得分:1)
您需要使后缀完全为 .so 。因此,删除多余的 .1
答案 1 :(得分:0)
我能够通过
将版本化的.so文件添加为资源来进行打包sourceSets.main {
resources.srcDir 'src/main/external'
}
在android
的{{1}}块内。或者,可以使用app.gradle
。
这会将指定路径上的所有文件复制到包的根目录,因此必须将源库放置在resources.srcDirs += ['src/main/whatever']
等处,然后才能将它们复制到{{ 1}}或src/main/external/lib/armeabi-v7a/libsomething.so.1.2.3
。
除了具有讽刺意味的是,它似乎并没有复制假定为库的文件(即与* .so匹配的文件,也可能与其他匹配的文件)。因此,您必须将.so放在/lib/armeabi-v7a/libsomething.so.1.2.3
中。