我刚刚安装了最新的 Android Studio 和 Android NDK。在检查我的 NDK 安装的 platforms
目录时,我可以看到以下平台:
android-9
android-12
android-13
android-14
android-15
android-16
android-17
android-18
android-19
android-21
android-22
android-23
android-24
您可以看到 NDK 中缺少 API 级别 10、11、20 和 25。那这是为什么?
如果我的应用应该以 API 级别 11 为目标怎么办?在这种情况下,我应该将什么定义为 ANDROID_PLATFORM
?我尝试了以下方法,尽管我的 NDK 中没有 android-11
目录,但它似乎可以工作:
externalNativeBuild {
cmake {
arguments '-DANDROID_PLATFORM=android-11',
'-DANDROID_TOOLCHAIN=clang'
}
}
这是达到 API 级别 11 的正确方法吗?这让我有点困惑,因为它似乎有效,但正如我所说,我的 NDK 安装中没有 android-11
目录...
感谢任何可以阐明这一点的人!
最佳答案
您可以在NDK guide 中找到问题的答案。 .底线是,并非所有系统升级都涉及对公共(public)(稳定) native API 的更改,因此在 platforms
下没有单独的目录。例如,要让您的原生库与 API 11 (HONEYCOMB) 兼容,您应该使用 platforms/android-9
。
一般的 Android NDK,特别是 Android Studio 的 CMake 实用程序,知道这条规则,并明确执行它 here .
请注意,最近的 NDK (r14) 已放弃对 API 9 (GINGERBREAD) 以下平台的支持。
更新 有一个bug在 NDK r15 中:它没有正确处理丢失的 android-25 文件夹。因此,如果您的 Android 项目有 minSdkVersion 25
,您应该手动选择 APP_PLATFORM=android-24(或 '-DANDROID_PLATFORM=android-24'如果你使用 cmake)。
关于android - 为什么 Android NDK 会错过某些 API 级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43559120/