【发布时间】:2021-04-13 20:44:40
【问题描述】:
我希望我没有重复任何其他帖子,但我找不到与我的案例类似的任何内容。 我正在使用他们的 PAX Neptune 服务为 Android 自动支付终端 (PAX A920) 创建一个依赖于 3rd 方本机库的服务。这些库仍然适用于已弃用的“armeabi”,但它们的演示应用程序运行良好。
现在,我已将这个原生库包含在 src/main/jniLibs/armeabi 下。我解压了构建的APK文件,并在lib/armeabi下找到了它们。
但是,当我安装 APK 时,它们不会像在演示应用中那样出现在设备上的 /data/app/com.mypackage.myservice/lib/arm 下。
这会导致我的服务在他们的 API 尝试加载库时崩溃。
我什至尝试添加
ndk {
abiFilters "armeabi"
}
在 build.gradle 中,甚至在 gradle.properies 中添加 android.useDeprecatedNdk=true。
不好。这些库在 APK 中可用,但不会安装在设备上。
检查演示应用程序代码,与我的配置没有什么不同,他们甚至没有使用 abiFilters 也没有使用 useDeprecatedNdk。
关于如何解决这个问题有什么建议吗?
编辑:谢谢亚历克斯。我将目录重命名为“armeabi-v7a”,它现在可以工作了!
亲切的问候
【问题讨论】:
-
很可能,演示应用在清单中声明的
targetSdkVersion非常低。关键是 Android 平台基于这个数字应用了各种向后兼容的填充程序。很有信心,您只需将这些库移动到src/main/jniLibs/armeabi-v7a,APK 就会运行。但这仍然无法在 Play Store 上发布,因为它们需要 64 位库。 -
非常感谢! @亚历克斯科恩。他们的目标是 28,这很奇怪。但是将目录重命名为“armeabi-v7a”确实有效!
-
让我们关闭这个问题,以便其他用户更容易找到。
标签: android android-ndk