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 版本。 |
| Kotlin Gradle 插件 (KGP) | 2.2.10 | 2.2.10 | 如需了解详情,请参阅对 Kotlin Gradle 插件的运行时依赖项。 |
统一的覆盖率和测试报告
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.1
| 已修复的问题 | ||
|---|---|---|
| Android Gradle 插件 |
|
|
Android Gradle 插件 9.2.0
| 已修复的问题 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Android Gradle 插件 |
|
|||||||||||||||
| lint |
|
|||||||||||||||
| lint 集成 |
|
|||||||||||||||
| 缩减器 (R8) |
|
|||||||||||||||