[英]Does Android's new 64-bit requirement mean the new minimum API level is 21 for apps with native code?
考虑以下:
minSdkVersion
设置为16,因为这涵盖了超过99%的设备( 1 )。 -D__ANDROID_API__
设置)必须等于minSdkVersion
( 3 )。 我已经尝试进行研究以弄清楚所有这些东西是如何工作的 - 直到现在我大部分时间都是为了将我的C ++库移植到Android而只是试图获取依赖关系来进行攻击 - 所以请原谅我如果我错过了一些非常明显的东西。 但在我看来,上面表明使用Android NDK构建的应用程序必须从2019年8月1日开始以最低API级别21为目标。这是正确的吗?
参考文献:
在我的研究过程中,我想我找到了答案。 如果这个错误,请随时添加更好的答案。
64位体系结构的最低API级别为21,这是因为Android之前根本不支持64位 。 通过在构建脚本和/或makefile中使用条件,可以为64位体系结构指定API级别为21,对于32位体系结构,仍然可以低至16。 通过这种方式,您将满足Google的要求,并且仍然提供与之前一样多的兼容性。 这是我自己的一个脚本的片段:
case "${ABI}" in
armeabi-v7a | x86)
API_LEVEL=16
;;
arm64-v8a | x86_64)
API_LEVEL=21
;;
*)
echo >&2 "Invalid ABI ${ABI}"
exit 1
;;
esac
只需编译并包含您在apk中的相同32位本机库的64位版本。 像以前一样留下最小的SDK版本。
如果应用程序在API <21上运行,它将不会看到64位本机库,它将像以前一样使用32位版本。 在API 21+上,设备可能使用64位libs,具体取决于CPU。
Cmake构建系统将自动选择正确的ndk库与build.gradle中的minSdkVersion链接,因此您不需要太在意设置构建过程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.