Android Gradle 插件 9.2.0(2026 年 4 月)

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

兼容性

Android Gradle 插件 9.2 支持的最高 API 级别为 API 级别 36.1。 以下是更多兼容性信息:

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

统一的覆盖率和测试报告

AGP 9.2.0-alpha07 引入了用于生成 HTML 信息中心的任务,这些信息中心会整合来自各种测试类型(单元测试和插桩测试)、模块和 build 变体的测试结果和覆盖率,从而在单个信息中心内提供全面概览。如需了解详情,请参阅生成统一的代码覆盖率报告查看统一的测试报告

R8 变更

AGP 9.2.0 中包含以下 R8 变更。

更严格的 -keepattributes 语义,用于保留运行时不可见的注解

运行时不可见的注解无法在运行时读取。因此,D8 会无条件移除运行时不可见的注解,并且无法更改此行为。

为了与 ProGuard 兼容,R8 支持输出运行时不可见的注解。但在编译为 DEX 时,通常不应保留运行时不可见的注解。不过,通常的做法是包含方便的规则 -keepattributes *Annotation*(直接或间接来自使用者保留规则),以便 R8 保留运行时可见的注解。 遗憾的是,这也会导致保留运行时不可见的注解。

为了缓解此问题并更好地匹配 D8 行为,带有通配符的 -keepattributes 模式不再与 RuntimeInvisibleAnnotationsRuntimeInvisibleParameterAnnotationsRuntimeInvisibleTypeAnnotations 匹配。 因此,只有在显式提及属性名称且不使用通配符的情况下,才会保留运行时不可见的注解。

以下规则现在都不会保留运行时不可见的注解:

-keepattributes *
-keepattributes *Annotation*
-keepattributes *Invisible*

如需保留运行时不可见的注解,请使用以下规则:

-keepattributes RuntimeInvisibleAnnotations,
                RuntimeInvisibleParameterAnnotations,
                RuntimeInvisibleTypeAnnotations

支持成员规则中的否定名称

配置语言已扩展,因此您现在可以匹配否定成员名称模式。

例如,如需匹配所有不以“ForTesting”结尾的方法,请使用以下规则:

-keepclassmembers class com.example.MyClass {
  *** !*ForTesting(...);
}

您还可以在 -if 规则的前提条件中否定成员名称模式。如果否定成员名称模式包含通配符,则无法在 -if 后续规则中反向引用此类通配符。

修复的问题

Android Gradle 插件 9.2.0-alpha04

修复的问题
Android Gradle 插件
使用新的 AGP DSL 重命名 APK
访问(但不评估)bootClasspath 时出错 IllegalStateException:targetCompatibility is not yet finalized

Android Gradle 插件 9.2.0-alpha03

修复的问题
Android Gradle 插件
JDK 26 出现 JdkImageTransform 失败
在 AGP 10.0 中自动对 AAR 元数据中的 minAgpVersion 进行编码
lint
由于 `SarifReporter.kt` 中的偏移指针卡住,导致 Lint SARIF 报告中的上下文窗口被截断
Lint Gradle 客户端缺少一项关键功能,导致其可靠性最多只能达到最佳水平
lint 集成
Lint Gradle 任务忽略 --quiet 标志

Android Gradle 插件 9.2.0-alpha02

修复的问题
Android Gradle 插件
AGP 9.0 没有与 applicationVariants.all.mergeAssetsProvider 等效的 androidComponents.onVariant
`*.xml.flat` 文件包含绝对文件路径
R8D8ThreadPoolBuildService 未注册
lint 集成
使用编译为 Java 21 字节码的自定义 lint 检查时,Android Lint 失败

Android Gradle 插件 9.2.0-alpha01

修复的问题
Android Gradle 插件
如果用户有 commonTest 但忘记 withHostTestBuilder,则向用户发出警告
[融合库 - 公开] OkHttp 包含来源
无法在库中使用清单占位符运行 androidDeviceTest(AGP 9.0.0,使用 com.android.kotlin.multiplatform.library 插件)
如果用户有 src/androidDeviceTest/java 但停用了 Java,AGP 应发出警告
lint
消息中的 Lint 错字