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 模式不再匹配 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.0-alpha04
| 已修复的问题 | |||
|---|---|---|---|
| Android Gradle 插件 |
|
||
Android Gradle 插件 9.2.0-alpha03
| 已修复的问题 | |||
|---|---|---|---|
| Android Gradle 插件 |
|
||
| lint |
|
||
| lint 集成 |
|
||
Android Gradle 插件 9.2.0-alpha02
| 已修复的问题 | ||||
|---|---|---|---|---|
| Android Gradle 插件 |
|
|||
| lint 集成 |
|
|||
Android Gradle 插件 9.2.0-alpha01
| 已修复的问题 | |||||
|---|---|---|---|---|---|
| Android Gradle 插件 |
|
||||
| lint |
|
||||