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

时间:2017-04-22 12:18:41

标签: android android-ndk

我刚刚安装了最新的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目录......

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

2 个答案:

答案 0 :(得分:5)

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

Android NDK,特别是适用于Android Studio的CMake实用程序,都知道此规则,并明确强制执行here

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

更新 NDK r15中有bug:它没有正确处理丢失的 android-25 文件夹。因此,如果您的Android项目有minSdkVersion 25,则应手动选择 APP_PLATFORM = android-24 (或' - DANDROID_PLATFORM = android-24'如果您使用cmake )。

答案 1 :(得分:0)

通过与android-ndk家伙聊天,我知道api 25不存在,因为“自版本24以来没有新功能”。