AndroidStudio 中的 cmake 版本

AndroidStudio 默认使用 CMake 3.10.2 进行构建。如需设置 CMake 版本,可以在模块的 build.gradle 文件中使用 android.externalNativeBuild.cmake.version 属性指定相应的版本:

1
2
3
4
5
6
7
8
9
android {
...
externalNativeBuild {
cmake {
...
version "cmake-version"
}
}
}

也可以在项目的 local.properties 文件中配置 cmake.dir 值。

AndroidStudio 与 Android Gradle Plugin 版本关系

Android Studio version name Android Studio version Required plugin version
Ladybug Feature Drop 2024.2.2 3.2-8.8
Ladybug 2024.2.1 3.2-8.7
Koala Feature Drop 2024.1.2 3.2-8.6
Koala 2024.1.1 3.2-8.5
Jellyfish 2023.3.1 3.2-8.4
Iguana 2023.2.1 3.2-8.3
Hedgehog 2023.1.1 3.2-8.2
Giraffe 2022.3.1 3.2-8.1
Flamingo 2022.2.1 3.2-8.0
Electric Eel 2022.1.1 3.2-7.4
Dolphin 2021.3.1 3.2-7.3
Chipmunk 2021.2.1 3.2-7.2
Bumblebee 2021.1.1 3.2-7.1
Arctic Fox 2020.3.1 3.1-7.0

AGP(Android Gradle Plugin)与 Gradle、NDK、 JDK 版本关系

Gradle Plugin version 最低 Gradle 版本 默认 NDK 版本 最低 JDK 最低 SDK Build Tools
8.8 8.10.2 27.0.12077973 17 35.0.0
8.7 8.9 27.0.12077973 17 34.0.0
8.6 8.7 26.1.10909125 17 34.0.0
8.5 8.7 26.1.10909125 17 34.0.0
8.4 8.6 26.1.10909125 17 34.0.0
8.3 8.4 25.1.8937393 17 34.0.0
8.2 8.2 25.1.8937393 17 34.0.0
8.1 8.0 25.1.8937393 17 33.0.1
8.0 8.0 25.1.8937393 17 30.0.3
7.4 7.5 23.1.7779620 11 30.0.3
7.3 7.4 23.1.7779620 11 30.0.3
7.2 7.3.3 21.4.7075529 11 30.0.3
7.1 7.2 21.4.7075529 11 30.0.3
7.0 7.0 21.4.7075529 11 30.0.2
4.2.0 6.7.1 21.4.7075529 NA 30.0.2
4.1.0 6.5 21.1.6352462 NA 29.0.2
4.0.0 6.1.1 21.4.7075529 NA 29.0.2
3.6.0 5.6.4 20.0.5594570 NA 28.0.3
3.5.0 5.4.1 未指定 NA 28.0.3
3.4.0 5.1.1 未指定 NA 28.0.3
3.3.0 4.10.1 未指定 NA 28.0.3
3.2.0 4.6 未指定 NA 28.0.3
3.1.0 4.4 未指定 NA 27.0.3
3.0.0 4.1 未指定 NA 26.0.2
2.3.0 3.3 未指定 NA 25.0.0
2.2.0 2.14.1 未指定 NA 23.0.2
2.1.0 2.10 未指定 NA 23.0.2
2.0.0 2.10 未指定 NA 21.1.1
  • JDK 11 支持最低 Gradle 版本为 5.0(AGP >= 3.4.x)
  • JDK 17 支持最低 Gradle 版本为 7.3(AGP >= 7.2)

jdk 版本设置

在 Android Studio 设置里 build Tools -> Gradle 设置 JDK 版本。

ndk 版本设置

老版本中,可以在 local.properties 文件中配置 ndk.dir 值(已废弃)。最新版本中,需要在模块的 build.gradle 文件中使用 android.ndkVersion 属性指定相应的版本:

1
2
3
android {
ndkVersion "major.minor.build" // e.g., ndkVersion "21.3.6528147"
}

BuildConfig 开关设置

  • AGP 4.0 以上版本,android.buildFeatures.buildConfig 替代 android.packageBuildConfig 来控制生成 BuildConfig 类。
  • AGP 4.0 及以下版本, 来配置。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // AGP 4.0 以上版本
    // 1. 在模块的 build.gradle 中添加以下配置,以关闭模块 BuildConfig 生成。
    android {
    buildFeatures {
    buildConfig = false
    }
    }

    // AGP 4.0 以下版本,在 build.gradle 中添加以下配置
    android {
    packageBuildConfig = false
    }

NDK 特性变更

NDK 版本 minSdkVersion 重要更新
26 21 NA
25 19 NA
24 19 NA
23 16 NA
22b 16 默认链接器使用 LLD,ndk-gdb 默认使用 LLDB
21e 16 不再支持 32 位 Windows,删除旧版 toolchains
20b 16 NA
19c 16 变更 toolchains 路径
18b 16 删除 gcc、gnustl、stlport
17c 14 默认使用 libc++
16b 14 NA
15c 14 NA
14b 9 NA
13b 9 默认使用 clang
12 默认生成 build-id

注意事项:

  1. build.gradle 文件中设置的 minSdkVersion 决定了在构建时可用的 API,也决定了代码兼容的最低操作系统版本。
  2. 最低 API 级别应该大于应用使用的 ndk 和使用的所有第三方库的最大 minSdkVersion。
  3. targetSdkVersion 可以改变原生代码的运行时行为。在运行时,可以通过调用 android_get_application_target_sdk_version() 来获取应用所使用的 targetSdkVersion。(API 24 以上)

Android 版本与 API 对照关系

Android 版本 API level Minimum JDK Minimum AGP version
15 35 17 8.6.0
14 34 17 8.1.1
13 33 11 7.2
12 32、31 11 NA
11 30 NA NA
10 29 NA NA
9 28 NA NA
8.1 27 NA NA
8.0 26 NA NA
7.1 25 NA NA
7.0 24 NA NA
6.0 23 NA NA
5.1 22 NA NA
5.0 21 NA NA
4.4w 20 NA NA
4.4 19 NA NA
4.3 18 NA NA
4.2 17 NA NA
4.1 16 NA NA
4.0.3 15 NA NA
4.0 14 NA NA
  • Android 12(api 31) 以上需要 jdk 11,不支持 jdk 8。

android.compileOptions.sourceCompatibility 属性决定了在编译 Java 源代码期间可用的 Java 语言功能。targetCompatibility 属性分别决定为编译的 Java 源代码生成字节码时使用的 Java 类格式版本。
(sourceCompatibility <= targetCompatibility <= 项目 JDK 版本)

1
2
3
4
5
6
android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
}

官方说明:

https://developer.android.com/studio/releases/gradle-plugin?hl=zh-cn&buildsystem=cmake
https://developer.android.com/studio/projects/install-ndk?hl=zh-cn
https://developer.android.com/ndk/guides/sdk-versions?hl=zh-cn
https://developer.android.com/tools/releases/platforms?hl=zh-cn