为什么Android NDK错过了某些API级别?

And*_*eas 2 android android-ndk

我刚刚安装了最新的Android Studio和Android NDK.在检查platforms我的NDK安装目录时,我可以看到以下平台:

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

您可以看到NDK中缺少API级别10,11,20和25.那为什么呢?

如果我的应用程序应该针对API级别11,该怎么办?ANDROID_PLATFORM在这种情况下我应该定义什么?我尝试了以下内容,虽然android-11我的NDK中没有目录,但它似乎有效:

externalNativeBuild {
    cmake {
        arguments '-DANDROID_PLATFORM=android-11',
                  '-DANDROID_TOOLCHAIN=clang'
    }
}
Run Code Online (Sandbox Code Playgroud)

这是针对API级别11的正确方法吗?这对我来说有点混乱,因为它似乎有用,但正如我所说,android-11我的NDK安装中没有目录......

感谢任何能够对此有所了解的人!

Ale*_*ohn 5

您可以在NDK指南中找到问题的答案.最重要的是,并非所有系统升级都涉及对公共(稳定)本机API的更改,因此没有单独的目录platforms.例如,要使用本机库与API 11(HONEYCOMB)兼容,您应该使用platforms/android-9.

一般来说,Android NDK,特别是适用于Android Studio的CMake实用程序,都知道此规则,并在此处明确强制执行.

请注意,最近的NDK(r14)已经放弃了对API 9(GINGERBREAD)以下平台的支持.

更新 NDK r15中存在一个错误:它没有正确处理丢失的android-25文件夹.所以,如果你的Android项目有minSdkVersion 25,你应该手动选择APP_PLATFORM = android-24(如果使用cmake ,则选择'-DANDROID_PLATFORM = android-24').