Android Gradle 插件 8.5.0(2024 年 6 月)

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

兼容性

Android Gradle 插件 8.5 支持的 API 级别上限为 API 级别 34。以下是其他兼容性信息:

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

修复的问题

Android Gradle 插件 8.5.0

已修复的问题
Android Gradle 插件
AAPT:错误: 标记中的属性“package”不是有效的 Android 软件包名称:“butterknife”。
AGP 8.3 会破坏 zipApksFor 任务
当 sdk 提供程序类名称为空时,Privacy Sandbox Proguard 规则生成会失败
Compose 预览无法解析传递依赖项中的类
JavaPreCompileTask 在计算非增量注解处理器时会包含 KSP 类路径依赖项
任务“:app:generateDebugLocaleConfig”的执行失败。
由于缺少嵌套成员,带 Java 11 目标的 DexingNoClasspathTransform (minSdk >= 24) 执行失败
使用 `android.useFullClasspathForDexingTransform = true` 时,build 会失败并显示“Found multiple transforms that can produce a variant”
在有和没有 K2 UAST 的情况下运行 lint 时出错
lint
buildList - 误报 lint 警告
lint 集成
lint 无法对 KMP 依赖项进行解析

Android Gradle 插件 8.5.1

已修复的问题
Android Gradle 插件
[Koala 2024.1.2 Canary 版 2] 在分屏 APK 上运行基准配置文件模块时出错

Android Gradle 插件 8.5.2

已修复的问题
Android Gradle 插件
AGP 8.5:运行了更多“mergeDebugResources”任务,导致构建速度变慢
通过 Variant API 添加 srcs 目录无法正常运行
Dexer (D8)
java.lang.VerifyError: Verifier rejected class com.pax.log.LogUtils: java.lang.StackTraceElement com.pax.log.LogUtils.getCaller(com.pax.log.b, java.lang.StackTraceElement[], int) failed to verify
lint
lint:SetTextI18n 会针对分配空字符串而发出警告。
缩减器 (R8)
[r8 8.5]停用 API 建模时,r8 水平类合并会导致 Android5 上出现验证错误
使用 Gradle 插件 8.4.0/8.5.0 构建的 Wear OS 版本可能会导致 java.lang.IllegalAccessError
[r8 8.5] 垂直类合并导致运行时 NPE
使用 AGP 8.6.0-alpha06 进行 Gradle 同步失败,并在 R8 中显示“Unexpected backport missing from Android U”错误
执行时,由 R8 生成的 dex 文件显示“Unable to find static main(String[]) in 'Test'”(无法在“Test”中找到静态 main(String[]))
由 R8 和 D8 打包的程序之间的行为不同
R8 (AGP 8.5.0 及更高版本) 会失败,并显示错误“Unexpected rewriting of item: ... to two distinct items:...”(意外将项“...”重写为两个不同的项“...”)
R8 处理错误可能由右移运算符导致
更新到 Kotlin 2.0 后出现 R8 NullPointer