Android Gradle 插件 8.3.0(2024 年 2 月)

Android Gradle 插件 8.3.0 是一个主要版本,包含各种新功能和改进。

兼容性

Android Gradle 插件 8.3 支持的最高 API 级别为 API 级别 34。以下是其他兼容性信息:

最低版本 默认版本 备注
Gradle 8.4 8.4 如需了解详情,请参阅更新 Gradle
SDK Build Tools 34.0.0 34.0.0 安装配置 SDK Build Tools。
NDK 不适用 25.1.8937393 安装配置其他版本的 NDK。
JDK 17 17 如需了解详情,请参阅设置 JDK 版本

以下是 Android Gradle 插件 8.3 中的新功能。

补丁版本

以下是 Android Studio Iguana 和 Android Gradle 插件 8.3 中的补丁版本列表。

Android Studio Iguana | 2023.2.1 补丁 2 和 AGP 8.3.2(2024 年 4 月)

此项次要更新包含这些 bug 修复

Android Studio Iguana | 2023.2.1 补丁 1 和 AGP 8.3.1(2024 年 3 月)

此项次要更新包含这些 bug 修复

对 Gradle 版本目录的支持

Android Studio 支持基于 TOML 的 Gradle 版本目录;借助此功能,您可以在一个中心位置管理依赖项,并在模块或项目之间共享依赖项。Android Studio 现在可以通过编辑器建议以及与 Project Structure 对话框集成,更轻松地配置版本目录。了解如何设置和配置 Gradle 版本目录或如何将 build 迁移到版本目录

代码补全和导航

当您修改 TOML 文件格式的版本目录或将版本目录中的依赖项添加到 build 文件时,Android Studio 会提供代码补全功能。如需使用代码补全功能,请按 Ctrl + 空格键(在 macOS 中,按 Command + 空格键)。此外,您还可以按 Ctrl+b(在 macOS 中,按 Command+b)快速从应用的 build.gradle 文件中的依赖项引用转到版本目录中声明该引用的位置。

添加依赖项时的代码补全

与“Project Structure”对话框集成

如果您的项目使用以 TOML 文件格式定义的版本目录,您可以通过 Android Studio 中的 Project Structure 对话框 Variables 视图 (File > Project Structure > Variables),修改已在其中定义的变量。对于每个版本目录,都有一个下拉列表,其中列出了该目录中的变量。要修改变量,请点击其值并覆盖该值。当您保存这些更改时,TOML 文件会相应更新。

“Project Structure”对话框中版本目录中的变量

您还可以在 Project Structure 对话框的 Dependencies 视图 (File > Project Structure > Dependencies) 中更新依赖项。如需使用 Project Structure 对话框更新版本,请找到您要修改的模块和依赖项,然后更新 Requested Version 字段。在您保存这些更改后,TOML 文件也会随之更新。请注意,如果依赖项版本是使用变量定义的,则直接以这种方式更新版本会将该变量替换为硬编码值。另请注意,无论您是否使用 Project Structure 对话框,从 build 文件中移除依赖项都不会从版本目录中移除该依赖项。

“Project Structure”对话框中版本目录的依赖项

已知问题和限制

以下是 Android Studio 中的 Gradle 版本目录支持的已知问题或限制。

  • 突出显示 Kotlin 脚本文件中的插件别名声明时出错:当您添加 alias(libs.plugins.example) 形式的插件声明时,编辑器会在 libs 部分下方添加一条红色下划线。这是 Gradle 8.0 及更低版本中的已知问题,将在未来的 Gradle 版本中得到解决。

  • Android Studio 仅支持 TOML 格式的版本目录:目前,Android Studio 代码补全、导航和“Project Structure”对话框支持仅适用于以 TOML 文件格式定义的版本目录。不过,您仍然可以直接在 settings.gradle 文件中添加版本目录,并在项目中使用其依赖项。

  • 不支持 KTS build 文件的导航:使用 Kotlin 脚本编写的 build 文件尚不支持使用 Ctrl + 点击(在 macOS 上,则按住 Command + 点击)导航到版本目录中的依赖项定义。

  • Firebase Assistant 直接在构建脚本中添加依赖项:Firebase Assistant 直接将依赖项添加到构建脚本中,而不是通过版本目录添加。

  • “Find usages”功能不受支持:尚不支持在其他 build 文件中查找版本目录变量的用法,无论 build 文件是在 KTS 中还是在 Groovy 中。也就是说,在版本目录中的变量定义上按住 Ctrl 键的同时点击(在 macOS 上,则是在 Command 键的同时点击)不会导致系统生成使用该变量的 build 文件。

  • Android Studio 中的“Project Structure”对话框会显示位于根 gradle 文件夹中的多个目录文件,但不显示复合 build 的目录。例如,如果您有两个目录文件(一个用于应用,另一个用于复合 build),“Project Structure”对话框将仅显示应用目录文件。您可以使用复合 build,但必须直接修改其 TOML 文件。

更多 SDK 数据分析:违反政策的问题

对于 Google Play SDK 索引中存在违反 Play 政策的公共 SDK,Android Studio 会在 build.gradle.ktsbuild.gradle 文件中以及“Project Structure”对话框中显示 lint 警告。您应更新所有违反 Play 政策的依赖项,因为这些违规行为可能会导致您日后无法发布到 Google Play 管理中心。违规警告是对 Android Studio 显示的过时版本警告的补充。

Android Studio compileSdk 版本支持

如果您的项目使用的 compileSdk 不受当前版本的 Android Studio 支持,Android Studio 会显示警告。我们还建议您迁移到支持项目所用 compileSdk 的 Android Studio 版本(如果有)。请注意,升级 Android Studio 可能还需要您升级 AGP。如果当前版本的 AGP 不支持项目使用的 compileSdk,AGP 还会在 Build 工具窗口中显示警告。

Lint 行为变更

从 Android Gradle 插件 8.3.0-alpha02 开始,在模块上运行 lint 时,系统会为该模块的主要组件和测试组件运行单独的 lint 分析任务。进行这项更改是为了提升性能。如需还原到之前的行为,请在 gradle.properties 文件中设置 android.experimental.lint.analysisPerComponent=false

默认启用精确的资源缩减

精确的资源缩减功能默认处于开启状态,即从 resources.arsc 文件中移除未使用的条目并移除未使用的资源文件。启用此缩减功能后,您的资源表会缩小,并且 APK 中仅包含引用的 res 文件夹条目。

如需关闭精确的资源缩减,请在项目的 gradle.properties 文件中将 android.enableNewResourceShrinker.preciseShrinking 设置为 false