问题:
我有一个为 x86 和 arm 编译的原生 Android 应用程序 armv7a。
该应用程序还链接到预共享库。
该预共享库也为 x86、arm 和 armv7a 编译。所以有3个lib.so文件。
鉴于正在编译的架构,我必须在 Android.mk/Application.mk 中做什么才能链接到适当的 *.so 文件?
也就是说,当构建系统为 arm 编译时,它应该链接到 libs/armeabi/lib.so。
同样,当构建系统为 x86 编译时,它应该使用 libs/x86/lib.so 文件。
我相信替代方案可能是一个更复杂的构建脚本,但如果存在的话,我会先寻找简单的解决方案。谢谢!
答案
不幸的是,我的查询技能不是很好,发布后不久,我发现问题和答案已经在 SO:
我如何将预建共享库链接到 Android NDK 项目?
总结一下:
为不同平台编译的预构建共享库都应该命名相同,并放在 jni/${ARCH}/ 目录下。
也就是说,结构应该是这样的: jni/x86/libtest.so jni/armeabi/libtest.so jni/armeabi-v7a/libtest.so