请考虑以下内容:
minSdkVersion
设置为16,因为它覆盖了99%以上的设备( 1 )。 -D__ANDROID_API__
设置)必须等于minSdkVersion
( 3 )。 我一直试图进行研究以弄清所有这些东西是如何工作的-直到现在,我一直主要通过尝试获取要构建的依赖关系以将我的C ++库移植到Android来破解自己的方式-因此,如果我遗漏了一些显而易见的内容,请原谅我。但是在我看来,以上表明,从2019年8月1日开始,使用Android NDK构建的应用程序必须将最低API级别定位为21。这是正确的吗?
参考文献:
答案 0 :(得分:1)
只需编译并包含apk中相同的32位本机库的64位版本。保留以前的最低SDK版本。
如果应用程序在API <21上运行,它将看不到64位本机库,并且它将像以前一样适用于32位版本。在API 21+上,设备可能会使用64位库,具体取决于CPU。
Cmake生成系统会自动从build.gradle中的minSdkVersion中选择正确的ndk库进行链接,因此您无需太在意设置生成过程。
答案 1 :(得分:0)
在研究过程中,我认为我找到了答案。如果这个错误,请随时添加更好的答案。
64位体系结构的最低API级别为21是由于Android simply did not support 64-bit before then的事实。通过在构建脚本和/或makefile中使用条件,可以将64位体系结构的API级别指定为21,而将32位体系结构的API级别指定为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