Android Gradle 插件 9.2 是一个次要版本,包含各种新功能和改进。
兼容性
Android Gradle 插件 9.2 支持的最高 API 级别为 API 级别 37.0。以下是其他兼容性信息:
| 最低版本 | 默认版本 | 备注 | |
|---|---|---|---|
| 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 仪表板的任务。这些仪表板整合了来自各种测试类型(单元测试和插桩测试)、模块和构建变体的测试结果和覆盖率,在单个仪表板中提供详尽概览。如需了解更多信息,请参阅生成统一的代码覆盖率报告和查看统一的测试报告。
R8 变更
AGP 9.2.0 中包含以下 R8 更改。
针对保留运行时不可见注解的更严格 -keepattributes 语义
运行时不可见注解无法在运行时被读取。因此,D8 会无条件地移除运行时不可见注解,且没有更改此行为的选项。
为了与 ProGuard 兼容,R8 支持输出运行时不可见注解。但在编译为 DEX 时,通常不应保留运行时不可见注解。然而,为了让 R8 保留运行时可见注解,通常的做法是包含简便规则 -keepattributes *Annotation*(直接包含或从使用方保留规则中间接包含)。不幸的是,这最终也会导致保留运行时不可见注解。
为了缓解此问题并更好地匹配 D8 的行为,带有通配符的 -keepattributes 模式将不再匹配 RuntimeInvisibleAnnotations、RuntimeInvisibleParameterAnnotations 和 RuntimeInvisibleTypeAnnotations。因此,只有在不使用通配符而明确列出属性名称时,才会保留运行时不可见注解。
现在,以下规则都不会保留运行时不可见注解:
-keepattributes *
-keepattributes *Annotation*
-keepattributes *Invisible*
如需保留运行时不可见注解,请使用以下规则:
-keepattributes RuntimeInvisibleAnnotations,
RuntimeInvisibleParameterAnnotations,
RuntimeInvisibleTypeAnnotations
成员规则中支持否定名称
配置语言已扩展,现在您可以匹配否定的成员名称模式。
例如,要匹配所有不以“ForTesting”结尾的方法,请使用以下规则:
-keepclassmembers class com.example.MyClass {
*** !*ForTesting(...);
}
成员名称模式也可以在 -if 规则的前置条件中被否定。如果否定的成员名称模式包含通配符,则此类通配符不能在 -if 的后续规则中被向后引用。
已修复的问题
Android Gradle 插件 9.2.1
| 已修复的问题 | ||
|---|---|---|
| Android Gradle 插件 |
|
|
Android Gradle 插件 9.2.0
| 已修复的问题 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Android Gradle 插件 |
|
|||||||||||||||
| Lint |
|
|||||||||||||||
| Lint 集成 |
|
|||||||||||||||
| 缩减器 (R8) |
|
|||||||||||||||