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+Space(在 macOS 上,按 Command+Space)。此外,您还可以按 Ctrl+b(在 macOS 上,按 Command+b)快速从应用的 build.gradle
文件中的依赖项引用跳转到版本目录中声明该依赖项的位置。
与“Project Structure”对话框集成
如果您的项目使用的是采用 TOML 文件格式定义的版本目录,您可以通过 Android Studio 中的 Project Structure 对话框 Variables 视图(依次点击 File > Project Structure > Variables)修改您在其中定义的变量。对于每个版本目录,都有一个下拉菜单,其中列出了该目录中的变量。如需修改变量,请点击其值并覆盖该值。保存这些更改后,TOML 文件会相应地更新。
您还可以在 Project Structure 对话框的 Dependencies 视图中更新依赖项(依次选择 File > Project Structure > Dependencies)。如需使用 Project Structure 对话框更新版本,请前往要修改的模块和依赖项,然后更新 Requested Version 字段。保存这些更改后,TOML 文件会相应地更新。请注意,如果依赖项版本是使用变量定义的,直接以这种方式更新版本会将变量替换为硬编码值。另请注意,无论您是否使用 Project Structure 对话框从 build 文件中移除依赖项,都不会从版本目录中移除该依赖项。
已知问题和限制
以下是 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 文件的导航:使用 Control+click(在 macOS 上为 Command+click)在版本目录中导航到依赖项定义的功能尚不支持使用 Kotlin 脚本编写的 build 文件。
Firebase Assistant 会直接在 build 脚本中添加依赖项:Firebase Assistant 会直接将依赖项添加到 build 脚本中,而不是通过版本目录添加。
不支持“查找用例”功能:无论 build 文件是 KTS 还是 Groovy 格式,都尚不支持在其他 build 文件中查找版本目录变量的用例。也就是说,在版本目录中对变量定义使用 Ctrl+点击(在 macOS 上,则使用 Command+点击)不会跳转到使用该变量的 build 文件。
如果多个目录文件位于根
gradle
文件夹中,Android Studio 中的“Project Structure”(项目结构)对话框会显示这些目录文件,但不会显示复合 build 的目录。例如,如果您有两个目录文件(一个用于应用,一个用于复合 build),则“Project Structure”(项目结构)对话框只会显示应用目录文件。您可以使用复合 build,但必须直接修改其 TOML 文件。
其他 SDK 数据分析:政策问题
对于在 Google Play SDK 索引中存在 Play 政策违规问题的公共 SDK,Android Studio 会在 build.gradle.kts
和 build.gradle
文件以及 Project Structure 对话框中显示 lint 警告。您应更新所有违反 Play 政策的依赖项,因为这些违规行为可能会导致您日后无法将内容发布到 Google Play 管理中心。政策违规警告是对 Android Studio 显示的过时版本警告的补充。
Android Studio compileSdk 版本支持
如果您的项目使用了当前版本的 Android Studio 不支持的 compileSdk
,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
。
修复的问题
Android Gradle 插件 8.3.0
已修复的问题 | ||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Android Gradle 插件 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||
Dexer (D8) |
|
|||||||||||||||||||||||||||||||||||||||||||||||||
lint |
|
|||||||||||||||||||||||||||||||||||||||||||||||||
lint 集成 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||
缩减器 (R8) |
|
Android Gradle 插件 8.3.1
已修复的问题 | ||
---|---|---|
Android Gradle 插件 |
|
|
lint 集成 |
|
Android Gradle 插件 8.3.2
已修复的问题 | |||
---|---|---|---|
Android Gradle 插件 |
|
||
lint 集成 |
|