Android的新64位要求是否意味着具有本地代码的应用程序的新最低API级别为21?

Jon*_*ung 6 android android-ndk android-api-levels

考虑以下:

  • 通常,开发人员会将其设置minSdkVersion为16,因为它覆盖了99%以上的设备(1)。
  • 但是,从2019年8月1日起,Android将要求所有应用程序提供64位版本(2)。
  • 此外,NDK API级别(设置为-D__ANDROID_API__)必须等于minSdkVersion3)。
  • 最后,运行在arm64-v8a上的Android设备不支持任何低于API级别21(4)的设备。

我试图进行研究以弄清楚所有这些东西是如何工作的-直到现在我一直主要通过试图建立依赖关系以将我的C ++库移植到Android来破解自己的方式-请原谅如果我缺少明显的东西。但是在我看来,上述表明从Android NDK生成的应用必须从2019年8月1日开始将最低API级别定位为21.这是否正确?

参考文献:

Jon*_*ung 5

在我的研究过程中,我我找到了答案。如果这是错误的,请随时添加更好的答案。

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
Run Code Online (Sandbox Code Playgroud)