【发布时间】:2018-11-03 06:48:07
【问题描述】:
我需要将名为“mylib.so.1”的共享库打包到 APK 中,但显然 gradle 无法识别“.so.1”扩展名,只能识别“.so”,并且在运行时我需要名为“.so”的库。 so.1" 以避免链接器错误。所有库都在 src/main/jniLibs/${ANDROID_ABI} 中。
【问题讨论】:
标签: android-studio android-ndk
我需要将名为“mylib.so.1”的共享库打包到 APK 中,但显然 gradle 无法识别“.so.1”扩展名,只能识别“.so”,并且在运行时我需要名为“.so”的库。 so.1" 以避免链接器错误。所有库都在 src/main/jniLibs/${ANDROID_ABI} 中。
【问题讨论】:
标签: android-studio android-ndk
您需要使后缀完全为 .so。所以去掉多余的.1
【讨论】:
我能够通过将版本化的 .so 文件添加为资源来打包
sourceSets.main {
resources.srcDir 'src/main/external'
}
在app.gradle 的android 块内。或者,可以使用resources.srcDirs += ['src/main/whatever']。
这会将指定路径中的所有文件复制到包的根目录,因此必须将源库放在src/main/external/lib/armeabi-v7a/libsomething.so.1.2.3 等处才能复制到.apk 或@987654328 中的/lib/armeabi-v7a/libsomething.so.1.2.3 @。
除了有点讽刺的是,它似乎没有复制假定为库的文件(即与 *.so 匹配的文件,可能还有其他文件)。所以你必须把你的 .so 文件放在src/jniLibs。
【讨论】: