在更新 Android Studio 时,您可能会收到一并将 Gradle
更新为最新可用版本的提示。您可以选择接受该更新,也可以根据项目的构建要求手动指定版本。
下表列出了各个 Android Gradle 插件版本所需的 Gradle 版本。为了获得最佳性能,您应使用 Gradle
和插件这两者的最新版本。
插件版本 | 所需的 Gradle 版本 |
---|---|
1.0.0 - 1.1.3 | 2.2.1 - 2.3 |
1.2.0 - 1.3.1 | 2.2.1 - 2.9 |
1.5.0 | 2.2.1 - 2.13 |
2.0.0 - 2.1.2 | 2.10 - 2.13 |
2.1.3 - 2.2.3 | 2.14.1+ |
2.3.0+ | 3.3+ |
3.0.0+ | 4.1+ |
3.1.0+ | 4.4+ |
3.2.0 - 3.2.1 | 4.6+ |
3.3.0 - 3.3.3 | 4.10.1+ |
3.4.0 - 3.4.3 | 5.1.1+ |
3.5.0 - 3.5.4 | 5.4.1+ |
3.6.0 - 3.6.4 | 5.6.4+ |
4.0.0+ | 6.1.1+ |
4.1.0+ | 6.5+ |
4.2.0+ | 6.7.1+ |
7.0 | 7.0+ |
7.1 / 7.1.2 | 7.2+ |
7.2 | 7.3+ |
7.3 / 7.3.0 | 7.4+ |
重新打开设置Gradle的页面,以7.1版本为例,找到7.1,改为7.1.2或者点击右侧下拉时,会出现当前版本可用的完整版本号。
最后点击 File - Sync Project with Gradle Files 重新编译以下Gradle
在更新 Android Studio 时,您可能会收到将 Android Gradle 插件自动更新为最新可用版本的提示。您可以选择接受该更新,也可以根据项目的构建要求手动指定版本。
您可以在 Android Studio 的 File > Project Structure > Project 菜单中指定插件版本,也可以在顶
级 build.gradle 文件中进行指定。该插件版本将用于在相应 Android Studio 项目中构建的所有模块。
以下示例从 build.gradle 文件中将插件的版本设置为 4.0.0:
buildscript {
repositories {
// Gradle 4.1 and higher include support for Google's Maven repo using
// the google() method. And you need to include this repo to download
// Android Gradle plugin 3.0.0 or higher.
google()
...
}
dependencies {
classpath 'com.android.tools.build:gradle:4.0.0'
//7.0版本的引用
//classpath 'com.android.tools.build:gradle:7.0.0'
}
}
注意:不应在版本号中使用动态依赖项(如
‘com.android.tools.build:gradle:2.+’),使用此功能可能会导致意外的版本更新和难以解析版本差异。
**
如果指定的插件版本尚未下载,则 Gradle 会在您下次构建项目时进行下载;或者,您也可以在 Android Studio 菜单栏中依次点击 Tools > Android > Sync Project with Gradle Files 进行下载。
您可以在 Android Studio 的 File > Project Structure > Project 菜单中指定 Gradle
版本,也可以通过在 gradle/wrapper/gradle-wrapper.properties 文件中修改 Gradle
分发引用来指定。
以下示例在 gradle-wrapper.properties 文件中将 Gradle 的版本设置为 6.1.1 或者 7.0.0。
...
distributionUrl = https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
//7.0版本
//distributionUrl = "https\://services.gradle.org/distributions/gradle-7.0.0-all.zip"
...
我们将更新 Android Gradle 插件 (AGP) 的版本号,以使其更接近底层 Gradle 构建工具。
重要变更如下:
AGP 现在将使用语义版本控制,并且重大变更将在主要版本中发布。
每年将发布一个 AGP 主要版本,与 Gradle 主要版本保持一致。
AGP 4.2 之后的版本为版本 7.0,并且会要求升级到 Gradle 7.x 版。AGP 的每个主要版本都会要求在底层 Gradle 工具中进行主要版本升级。
API 的弃用将提前大约一年进行,同时提供替换功能。废弃的 API 将在大约一年后的下次重大更新期间移除。
1.兼容性
最低版本 | 默认版本 | 备注 | |
---|---|---|---|
Gradle | 7.0.2 | 7.0.2 | 如需了解详情,请参阅更新 Gradle。 |
SDK Build Tools | 30.0.2 | 30.0.2 | 安装或配置 SDK Build Tools。 |
NDK | 不适用 | 21.4.7075529 | 安装或配置其他版本的 NDK。 |
JDK | 11 | 11 | 如需了解详情,请参阅设置 JDK 版本。 |
2.需要 JDK 11 才能运行 AGP 7.0
使用 Android Gradle 插件 7.0 构建应用时,现在需要 JDK 11 才能运行 Gradle。Android Studio Arctic Fox 捆绑了 JDK 11,并将 Gradle 配置为默认使用 JDK 11,这意味着大多数 Android Studio 用户不需要对项目进行任何配置更改。
如需手动设置 JDK 版本供 Android Studio 中的 AGP 使用,您需要使用 JDK 11 或更高版本。
如果使用的是独立于 Android Studio 的 AGP,请将 JAVA_HOME 环境变量或 -Dorg.gradle.java.home 命令行选项设置为您的 JDK 11 安装目录,以此升级 JDK 版本。
3.Lint 分析任务现在可缓存
AndroidLintAnalysisTask 现在与 Gradle 构建缓存兼容。如果您通过在 gradle.properties 文件中设置 org.gradle.caching=true 来启用构建缓存,lint 分析任务将尽可能从构建缓存中获取其输出。
使用 Android Gradle 插件运行 lint 时,lint 分析任务通常是最大的瓶颈,因此在许多情况下,启用构建缓存可以提高 lint 运行速度。您应该会看到显著的性能提升,例如,如果您有多模块项目,并在使用 CI 服务器运行 lint 之前清理了构建目录。
4.C/C++ 模块现在可引用同一项目中的其他 C/C++ 模块
现在,包含 C/C++ 代码的 Gradle Android 模块可设置为引用其他 Gradle 模块中的头文件和库代码。Prefab 协议用于在 Gradle 模块之间传递头文件和库。
要求
android {
buildFeatures {
prefab true
}
}
android {
buildFeatures {
prefabPublishing true
}
}
dependencies {
implementation project(':mylibrary')
}
android {
prefab {
mylibrary {
libraryName "libmylibrary"
headers "src/main/cpp/include"
}
}
}
find_package(mylibrary REQUIRED CONFIG)
target_link_libraries(
myapplication
mylibrary::mylibrary)
android {
defaultConfig {
externalNativeBuild {
cmake {
arguments '-DANDROID_STL=c++_shared'
}
}
}
}
如需详细了解如何使用 AGP 配置原生 AAR 使用方和提供方,请参阅原生依赖项与 AGP。
5.settings.gradle 文件中的代码库设置
在 Android Studio Bumblebee 中创建新项目时,顶层 build.gradle 文件包含 plugins 代码块,后跟用于清理构建目录的代码:
plugins {
id 'com.android.application' version '7.1.0-beta02' apply false
id 'com.android.library' version '7.1.0-beta02' apply false
id 'org.jetbrains.kotlin.android' version '1.5.30' apply false
}
task clean(type: Delete) {
delete rootProject.buildDir
}
pluginManagement {
repositories {
gradlePluginPortal()
google()
mavenCentral()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
rootProject.name = 'GradleManagedDeviceTestingNew'
include ':app'
模块级 build.gradle 文件未更改。因此,请使用顶级 build.gradle 文件和 settings.gradle 文件定义将应用于项目中所有模块的 build 配置,或定义适用于 Gradle 本身的代码库和依赖项;使用模块级 build.gradle 文件定义特定于项目中的给定模块的 build 配置。
官方说明地址