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 分析任务会抛出异常。此更改可防止罕见错误缓存在构建缓存中。

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

修复的问题

Android Gradle 插件 8.7.0

已修复的问题
Android Gradle 插件
AGP 应声明其支持即将发布的 API 35
AGP 8.5:运行了更多“mergeDebugResources”任务,导致构建速度变慢
将 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”
KtAnalysisSessionProvider 与 8.7.0-alpha04 中引入的 lint 检查不兼容
将 Kotlin 与 PackageManager.ResolveInfoFlags.of 搭配使用时,出现“假正例”WrongConstant

Android Gradle 插件 8.7.1

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

Android Gradle 插件 8.7.2

已修复的问题
lint
AGP 8.7.0 - 针对 NavOptionsBuilder.popUpTo 的 lint 假正例 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 仅授予系统应用