Android Gradle 插件 8.7.0(2024 年 10 月)

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

兼容性

Android Gradle 插件 8.7 支持的最高 API 级别为 API 级别 35。以下是其他兼容性信息:

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

Lint 行为变更

从 Android Gradle 插件 8.7.0-alpha08 开始,如果使用 Gradle 运行 lint 时出现 LintError,lint 分析任务会抛出异常。 此变更可防止在 build 缓存中缓存罕见错误。

遗憾的是,此更改会破坏在 lint 基准文件中包含真实 LintError 实例的项目的 build。错误消息包含有关哪些 lint 检查导致了问题的信息。在某些情况下,更新相应的库依赖项可能会解决问题。如果不是,您可以在库作者修复该问题之前停用有问题的 lint 检查。

修复的问题

Android Gradle 插件 8.7.0

已修复的问题
Android Gradle 插件
AGP 应声明其支持即将发布的 API 35
AGP 8.5:运行的“mergeDebugResources”任务更多,导致 build 速度变慢
将 ndk 27 设为 AGP 中的默认 NDK。
AGP 应声明其支持即将发布的 API 35
AGP 应声明其支持即将发布的 API 35
运行 Android lint 失败,并显示 NoSuchFileException
BuildType#initWith 会复制后处理块,但不会应用 ProGuard 配置
无法合并 foregroundServiceType 标记
运行 Android lint 失败,并显示 NoSuchFileException
lint
Lint 应检查用作 ViewGroup 的无效对象
对于具有 null 主机名称的 URI,显示“android:host is missing”
KtAnalysisSessionProvider 与 8.7.0-alpha04 中引入的 lint 检查不兼容
使用 PackageManager.ResolveInfoFlags.of 和 Kotlin 时出现“假正例”WrongConstant

Android Gradle 插件 8.7.1

已修复的问题
Android Gradle 插件
AGP 文档中有很多 TBD
lint
AGP 8.6.1:回归 - 在 Kotlin 中使用 @LongDef 内的 [Int].toLong() 时出现 WrongConstant lint 失败
设置 http 或 https intent-filter 方案时出现“必须至少指定一个主机”lint 错误

Android Gradle 插件 8.7.2

已修复的问题
lint
AGP 8.7.0 - Lint 在 NavOptionsBuilder.popUpTo 上出现 RestrictedApi 假正例
缩减器 (R8)
[R8 8.6.27] 方法实现已替换为“throw null”
默认 Android ProGuard 文件与当前版本的 R8 搭配使用时会抛出警告
如果消息过大,MissingStartupProfileItemsDiagnostic 会因内存不足错误而导致 Gradle 客户端崩溃

Android Gradle 插件 8.7.3

已修复的问题
lint
运行 lint 时,缺少许多分析 API 方法警告
误报 lint 检查:android.permission.SCHEDULE_EXACT_ALARM 仅授予系统应用