Android Gradle 插件 8.7 版本发布说明

JCenter 存储库于 2021 年 3 月 31 日变为只读。有关更多信息,请参阅 JCenter 服务更新

Android Studio 构建系统基于 Gradle,Android Gradle 插件添加了一些特定于构建 Android 应用的功能。虽然 Android Gradle 插件 (AGP) 通常与 Android Studio 同步更新,但插件(以及 Gradle 系统的其余部分)可以独立于 Android Studio 运行并单独更新。

此页面说明如何使您的 Gradle 工具保持最新状态以及最近更新的内容。有关过去 Android Gradle 插件版本的发布说明,请参阅 过去的发布说明

要查看此版本的 Android Gradle 插件中修复的内容,请参阅 已关闭的问题

有关 Android Gradle 插件中即将发生的重大更改的高级摘要,请参阅 Android Gradle 插件路线图

有关如何使用 Gradle 配置 Android 构建的详细信息,请参阅以下页面

有关 Gradle 构建系统的更多信息,请参阅 Gradle 用户指南

更新 Android Gradle 插件

更新 Android Studio 时,您可能会收到一个提示,提示您自动将 Android Gradle 插件更新到最新可用版本。您可以选择接受更新或根据项目的构建需求手动指定版本。

您可以在 Android Studio 中的**文件** > **项目结构** > **项目**菜单或顶级 build.gradle.kts 文件中指定插件版本。插件版本适用于在该 Android Studio 项目中构建的所有模块。以下示例从 build.gradle.kts 文件中将插件设置为版本 8.7.0

Kotlin

plugins {
    id("com.android.application") version "8.7.0" apply false
    id("com.android.library") version "8.7.0" apply false
    id("org.jetbrains.kotlin.android") version "2.0.20" apply false
}

Groovy

plugins {
    id 'com.android.application' version '8.7.0' apply false
    id 'com.android.library' version '8.7.0' apply false
    id 'org.jetbrains.kotlin.android' version '2.0.20' apply false
}

注意:您不应在版本号中使用动态依赖项,例如 'com.android.tools.build:gradle:8.7.+'。使用此功能会导致意外的版本更新以及难以解决版本差异。

如果尚未下载指定的插件版本,则在您下次构建项目或从 Android Studio 菜单栏中单击**文件** > **与 Gradle 文件同步项目**时,Gradle 会下载它。

更新 Gradle

更新 Android Studio 时,您可能会收到一个提示,提示您也将 Gradle 更新到最新可用版本。您可以选择接受更新或根据项目的构建需求手动指定版本。

下表列出了每个版本的 Android Gradle 插件所需的 Gradle 版本。为了获得最佳性能,您应该使用 Gradle 和插件的最新版本。

插件版本最低要求的 Gradle 版本
8.78.9
8.68.7
8.58.7
8.48.6
8.38.4
8.28.2
8.18.0
8.08.0
7.47.5

旧版本

插件版本所需的 Gradle 版本
7.37.4
7.27.3.3
7.17.2
7.07.0
4.2.0+6.7.1
4.1.0+6.5+
4.0.0+6.1.1+
3.6.0 - 3.6.45.6.4+
3.5.0 - 3.5.45.4.1+
3.4.0 - 3.4.35.1.1+
3.3.0 - 3.3.34.10.1+
3.2.0 - 3.2.14.6+
3.1.0+4.4+
3.0.0+4.1+
2.3.0+3.3+
2.1.3 - 2.2.32.14.1 - 3.5
2.0.0 - 2.1.22.10 - 2.13
1.5.02.2.1 - 2.13
1.2.0 - 1.3.12.2.1 - 2.9
1.0.0 - 1.1.32.2.1 - 2.3

您可以在 Android Studio 中的**文件** > **项目结构** > **项目** 菜单中指定 Gradle 版本,或者使用命令行更新您的 Gradle 版本。首选方法是使用 Gradle Wrapper 命令行工具,它会更新 gradlew 脚本。以下示例使用 Gradle Wrapper 将 Gradle 版本设置为 8.7。请注意,您需要运行此命令两次才能同时升级 Gradle 和 Gradle Wrapper 本身(有关更多信息,请参阅 升级 Gradle Wrapper)。

gradle wrapper --gradle-version 8.7

但是,在某些情况下这可能会失败,例如,如果您刚刚更新了 AGP 并且它不再与当前的 Gradle 版本兼容。在这种情况下,您需要在 gradle/wrapper/gradle-wrapper.properties 文件中编辑 Gradle 分发引用。以下示例在 gradle-wrapper.properties 文件中将 Gradle 版本设置为 8.7。

...
distributionUrl = https\://services.gradle.org/distributions/gradle-8.7-bin.zip
...

Android Gradle 插件和 Android Studio 兼容性

Android Studio 构建系统基于 Gradle,而 Android Gradle 插件 (AGP) 添加了一些特定于构建 Android 应用的功能。下表列出了每个 Android Studio 版本所需的 AGP 版本。

Android Studio 版本 所需的 AGP 版本
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

旧版本

Android Studio 版本 所需的 AGP 版本
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

有关 Android Gradle 插件新增功能的信息,请参阅 Android Gradle 插件发行说明

Android API 级别工具的最低版本

Android Studio 和 AGP 的最低版本支持特定的 API 级别。使用低于项目 targetSdkcompileSdk 所需的 Android Studio 或 AGP 版本可能会导致意外问题。我们建议使用最新版本的 Android Studio 和 AGP 来处理针对 Android 操作系统预览版本的项目。您可以 在稳定版本旁边安装 Android Studio 的预览版本

Android Studio 和 AGP 的最低版本如下所示

API 级别 最低 Android Studio 版本 最低 AGP 版本
35 Koala Feature Drop | 2024.2.1 8.6.0
34 Hedgehog | 2023.1.1 8.1.1
33 Flamingo | 2022.2.1 7.2

版本控制更改 (2020 年 11 月)

我们正在更新 Android Gradle 插件 (AGP) 的版本编号,使其更接近底层 Gradle 构建工具。

以下是值得注意的更改

  • AGP 现在将使用语义版本控制,重大更改将针对主要版本。

  • 每年将发布一个主要版本的 AGP,与 Gradle 主要版本保持一致。

  • AGP 4.2 之后的版本将是 7.0 版,并且需要升级到 Gradle 7.x 版。AGP 的每个主要版本都需要底层 Gradle 工具的主要版本升级。

  • API 将提前大约一年弃用,同时提供替代功能。弃用的 API 将在大约一年后的后续主要更新期间删除。

兼容性

Android Gradle 插件 8.6 支持的最大 API 级别是 API 级别 34。以下是其他兼容性信息

最低版本 默认版本 注释
"Gradle" 8.9 8.9 "要了解更多信息,请参阅 更新 Gradle。"
SDK 构建工具 34.0.0 34.0.0 安装配置 SDK 构建工具。
NDK N/A 27.0.12077973 "安装配置 不同版本的 NDK。"
JDK 17 17 "要了解更多信息,请参阅 设置 JDK 版本。"

Lint 行为更改

从 Android Gradle 插件 8.7.0-alpha08 开始,如果在使用 Gradle 运行 lint 时出现 LintError,则 lint 分析任务将引发异常。此更改可防止在构建缓存中缓存罕见的错误。

不幸的是,此更改会破坏具有 lint 基线文件中真实 LintError 实例的项目的构建。错误消息包含有关哪些 lint 检查导致问题的信息。在某些情况下,更新相应的库依赖项可能会解决问题。如果不是,您可以禁用有问题的 lint 检查,直到库作者修复它。

已解决的问题

Android Gradle 插件 8.7.0

已解决的问题
Android Gradle 插件
AGP 应声明它支持即将发布的 API 35
AGP 8.5:运行了更多“mergeDebugResources”任务,导致构建速度变慢
在 AGP 中将 ndk 27 设为默认 NDK。
AGP 应声明它支持即将发布的 API 35
AGP 应声明它支持即将发布的 API 35
运行 Android lint 失败,出现 NoSuchFileException
BuildType#initWith 复制后处理块,但未应用 proguard 配置
无法合并 foregroundServiceType 标记
运行 Android lint 失败,出现 NoSuchFileException
Lint
Lint 应检查用作 ViewGroups 的无效对象
主机为空的 uri 的“android:host 缺失”
KtAnalysisSessionProvider 与 8.7.0-alpha04 中引入的 lint 检查不兼容
使用 Kotlin 时,使用 PackageManager.ResolveInfoFlags.of 时出现“误报”WrongConstant

Android Gradle 插件 8.7.1

已解决的问题
Android Gradle 插件
agp 文档有很多待办事项
Lint
AGP 8.6.1:回归 - 在 Kotlin 中使用 [Int].toLong() 时出现 WrongConstant lint 失败
设置 http 或 https intent-filter 方案时出现“必须指定至少一个主机”lint 错误

Android Gradle 插件 8.7.2

已解决的问题
Lint
AGP 8.7.0 - NavOptionsBuilder.popUpTo 上的 Lint 误报 RestrictedApi
压缩器 (R8)
[R8 8.6.27] 方法实现替换为`throw null`
与当前版本的 R8 一起使用时,默认的 android proguard 文件会发出警告
如果消息过大,MissingStartupProfileItemsDiagnostic 会导致 Gradle 客户端出现内存不足错误