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 实例的项目,此变更会导致构建失败。错误消息包含有关哪些 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 的无效对象
主机为空的 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() 时,WrongConstant lint 检查失败
设置 http 或 https intent-filter scheme 时出现“必须指定至少一个主机”的 lint 错误

Android Gradle 插件 8.7.2

已解决的问题
Lint
AGP 8.7.0 - NavOptionsBuilder.popUpTo 上的 RestrictedApi 误报 lint 检查
Shrinker (R8)
[R8 8.6.27] 方法实现被替换为 `throw null`
默认 android proguard 文件与当前版本的 R8 一起使用时会发出警告
如果消息过大,MissingStartupProfileItemsDiagnostic 会因内存不足错误导致 Gradle 客户端崩溃

Android Gradle 插件 8.7.3

已解决的问题
Lint
运行 lint 时出现许多缺少分析 API 方法的警告
android.permission.SCHEDULE_EXACT_ALARM 误报 lint 检查仅授予系统应用