Android Gradle 插件 8.4.0 是一个主要版本,包含各种新功能和改进。
兼容性
Android Gradle 插件 8.4 支持的 API 级别上限为 API 级别 34。以下是其他兼容性信息:
最低版本
默认版本
备注
Gradle
8.6
8.6
如需了解详情,请参阅更新 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.4 中的新功能。
补丁版本
以下是 Android Studio Jellyfish 和 Android Gradle 插件 8.4 中的补丁版本列表。
Android Studio Jellyfish | 2023.3.1 补丁 2 和 AGP 8.4.2(2024 年 6 月)
重要提示:此更新修复了 Android Studio Iguana | 2023.2.1 及更高版本中 GitHub 插件中存在的严重漏洞。
重要安全更新:Android Studio Iguana | 2023.2.1 及更高版本中提供的 GitHub 插件存在一个安全漏洞,该漏洞可能会将访问令牌泄露给未经授权的各方。
修复方法:JetBrains 已解决 IntelliJ 平台产品中的问题,该修复程序现已包含在 Android Studio Jellyfish | 2023.3.1 Patch 2 (2023.3.1.20) 中。
如果您已在稳定版渠道上安装了 Android Studio build,则可以依次点击 Help > Check for Updates(在 macOS 上,依次点击 Android Studio > Check for Updates)来获取更新。否则,请下载最新的稳定版 build。
此外,如果您在 IDE 中积极使用 GitHub 拉取请求功能,我们强烈建议您撤消该插件使用的所有 GitHub 令牌。由于该插件可以使用 OAuth 集成或个人访问令牌 (PAT),因此请检查这两者,并根据需要撤消:
如需撤消 OAuth 集成的访问权限,请依次前往 Applications > Authorized OAuth Apps,然后撤消 JetBrains IDE Integration 令牌的访问权限。
如需撤消 PAT 的访问权限,请前往个人访问令牌,然后删除为 GitHub 插件颁发的令牌。默认令牌名称为 IntelliJ IDEA GitHub 集成插件,但您可能使用的是自定义名称。
撤消令牌的访问权限后,您需要重新设置插件,才能让所有插件功能(包括 Git 操作)恢复正常运行。
对于由此给您带来的任何不便,我们深表歉意,并敦促所有用户立即更新,以保护其代码和数据。
本次要更新还包含这些 bug 修复。
Android Studio Jellyfish | 2023.3.1 补丁 1 和 AGP 8.4.1(2024 年 5 月)
此项次要更新包含这些 bug 修复。
缩减了库类
从 Android Gradle 插件 8.4 开始,如果 Android 库项目经过缩减,系统会发布缩减的程序类以进行项目间发布。这意味着,如果应用依赖于缩减版的 Android 库子项目,则 APK 将包含缩减版的 Android 库类。如果 APK 中缺少类,您可能需要调整库保留规则。
如果您要构建和发布 AAR,则库依赖的本地 JAR 将以未缩减的形式包含在 AAR 中,这意味着代码缩减器不会对其运行。
如需恢复到之前的行为,请在 gradle.properties 文件中设置 android.disableMinifyLocalDependenciesForLibraries,并提交 bug。未来的 AGP 版本将移除此标志。
修复的问题
Android Gradle 插件 8.4.0
已修复的问题
Android Gradle 插件
问题 278800528
改进了旨在解释“--release”选项为何无法用于 JavaCompile 的错误消息
问题 194804421
使用 @DoNotCacheByDefault 停用了 MergeSourceSetFolders 缓存
问题 298703884
无法在 AGP 8.2.0 中设置 JaCoCo 版本
问题 300096187
DynamicFeatureBuildType 缺少 isDebuggable
问题 263197720
缩减后的库类未正确发布以供项目间使用
问题 266681484
提供会排除生成的文件的 Variant#sources API
问题 248059128
AGP 模型不包含 java-platform 项目依赖项
问题 315336689
ExtractAarTransform 会为没有 classes.jar 的 aar 创建不可重现的 classes.jar
问题 318384658
允许从 ComposeOptions 配置 sourceInformation
问题 318732733
在消息 android.bundle.DeviceSpec 中找不到字段:sdk_runtime
问题 168640703
支持 compileOnlyApi
问题 319132114
停用资源处理后,R8 在库模块上会失败
问题 #241581686
添加了在转换期间更改工件名称的功能
问题 320711864
将任务输出添加为 sourceSets.androidMain.resources 的 srcDir 不会创建任务依赖项
问题 319053159
AndroidPluginVersion.toString() 缺少前导 0
问题 302717381
Artifacts.add(FileSystemLocation) 应更具限制性。
问题 307987906
AGP 8.3.0-alpha11 会生成发布 APK,该 APK 会在启动时崩溃,并报出 android.content.res.Resources$NotFoundException
问题 314731501
在使用动态功能的项目中,Android Gradle 插件 8.2.0 安装任务会失败
问题 317262738
AIDL 编译失败并抛出 IndexOutOfBoundsException:索引 0 超出长度 0 的范围
问题 284003132
MergeJavaResourcesTask 增量输入处理问题
问题 299134781
AGP 8.3.0-alpha02 依赖于存在已知安全漏洞的库
问题 297226571
所选 activity 模板需要项目具有 androidx.* 依赖项
问题 281118582
AGP 升级助理会错误地从模块中移除 consumerProguardFiles
问题 324445638
AGP 升级助理无限加载
问题 328852035
SourceDirectories#static 不应依赖于 GenerateBuildConfig 任务
问题 319822816
Compose 预览无法解析传递依赖项中的类
问题 330593433
AGP 8.3 会破坏 zipApksFor 任务
问题 328687152
打包在 Android APK 中的 AndroidX Desktop 工件
lint
问题 321771651
lint 测试框架的 GradleModelMocker 不允许设置库版本
问题 325107804
lint K2 UAST:UCallableReferenceExpression 报告了错误的 qualifierType
问题 324087645
使用过载函数时,如果 useK2Uast=true,则 lint 会出现假正例
问题 251722662
[BuildTool/Lint] ChecksSdkIntAtLeast 构造函数属性
lint 集成
问题 330911660
lint 无法对 KMP 依赖项进行解析
Android Gradle 插件 8.4.1
已修复的问题
Android Gradle 插件
问题 332788833
允许抑制有关 JDK 21 废弃对以 Java 8 为目标平台的支持的警告
Dexer (D8)
问题 334275655
java.lang.VerifyError: Verifier rejected class
问题 335663479
混淆后出现新版 R8 格式转换错误
问题 335803299
中间 build 可能不包含桩的全局合成内容
Android Gradle 插件 8.4.2
已修复的问题
Android Gradle 插件
问题 339670469
AGP 8.4 似乎会破坏 CI 上的 GMD 下载