Android Gradle 插件 8.4.0 (2024 年 4 月)

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 Patch 2 和 AGP 8.4.2 (2024 年 6 月)

重要安全更新: Android Studio Iguana | 2023.2.1 及更高版本中可用的 GitHub 插件中的一个安全漏洞可能导致访问令牌暴露给未经授权的第三方。

修复方案: Jetbrains 已解决了 IntelliJ 平台产品中的问题,该修复方案现已在 Android Studio Jellyfish | 2023.3.1 Patch 2 (2023.3.1.20) 中提供。

如果您已经在稳定版渠道上安装了 Android Studio 版本,可以通过点击 Help > Check for Updates(在 macOS 上点击 Android Studio > Check for Updates)来获取更新。否则,请下载最新的稳定版本

此外,如果您在 IDE 中积极使用过 GitHub 拉取请求功能,我们强烈建议您撤销插件使用的任何 GitHub 令牌。考虑到插件可以使用 OAuth 集成或个人访问令牌 (PAT),请检查这两者并在必要时撤销。

  • 要撤销 OAuth 集成的访问权限,请前往 Applications > Authorized OAuth Apps 并撤销 JetBrains IDE Integration 令牌的访问权限。
  • 要撤销 PAT 的访问权限,请前往 Personal access tokens 并删除为 GitHub 插件颁发的令牌。默认令牌名称是 IntelliJ IDEA GitHub integration plugin,但您可能使用了自定义名称。

撤销令牌的访问权限后,您需要重新设置插件,以便让所有插件功能(包括 Git 操作)再次工作。

对于给您带来的不便,我们深表歉意,并敦促所有用户立即更新,以保护他们的代码和数据。

此次次要更新还包含这些错误修复

Android Studio Jellyfish | 2023.3.1 Patch 1 和 AGP 8.4.1 (2024 年 5 月)

此次次要更新包含这些错误修复

库类被压缩

从 Android Gradle 插件 8.4 开始,如果 Android 库项目被混淆,压缩后的程序类将用于项目间发布。这意味着如果一个应用依赖于 Android 库子项目的压缩版本,APK 将包含压缩的 Android 库类。如果 APK 中缺少类,您可能需要调整库保留规则

如果您正在构建和发布 AAR,您的库依赖的本地 jar 将以未压缩的形式包含在 AAR 中,这意味着代码压缩器不会对其运行。

要恢复到之前的行为,请在 gradle.properties 文件中设置 android.disableMinifyLocalDependenciesForLibraries提交错误。AGP 的未来版本将移除此标志。

已修复问题

Android Gradle 插件 8.4.0

已修复问题
Android Gradle 插件
改进关于为何不能将 `--release` 选项用于 JavaCompile 的错误消息
使用 @DoNotCacheByDefault 禁用 MergeSourceSetFolders 的缓存
无法在 AGP 8.2.0 中设置 JaCoCo 版本
DynamicFeatureBuildType 缺少 isDebuggable
压缩后的库类未正确发布以供项目间使用
提供排除生成文件的 Variant#sources API
AGP 模型不包含 java-platform 项目依赖项
ExtractAarTransform 为不包含 classes.jar 的 aars 创建不可重现的 classes.jar
允许从 ComposeOptions 配置 sourceInformation
在消息 android.bundle.DeviceSpec 中找不到字段: sdk_runtime
支持 compileOnlyApi
资源处理禁用时,R8 在库模块上失败
添加在转换期间更改 artifact 名称的功能
将任务输出添加到 sourceSets.androidMain.resources 的 srcDir 不会创建任务依赖项
AndroidPluginVersion.toString() 缺少前导零
Artifacts.add(FileSystemLocation) 应该更严格。
AGP 8.3.0-alpha11 生成的发布 APK 在启动时崩溃,出现 android.content.res.Resources$NotFoundException
使用动态功能的项目中,Android Gradle Plugin 8.2.0 安装任务失败
AIDL 编译失败,出现 IndexOutOfBoundsException: Index 0 out of bounds for length 0
MergeJavaResourcesTask 增量输入处理问题
AGP 8.3.0-alpha02 依赖于已知安全漏洞的库
选定的 activity 模板需要包含 androidx.* 依赖项的项目
AGP 升级助手错误地从模块中移除 consumerProguardFiles
AGP 升级助手无限加载
SourceDirectories#static 不应依赖于 GenerateBuildConfig 任务
Compose 预览无法解析传递依赖项中的类
AGP 8.3 破坏了 zipApksFor 任务
AndroidX Desktop artifact 被打包到 Android APK 中
Lint
Lint 测试框架的 GradleModelMocker 不允许设置库版本
Lint K2 UAST: UCallableReferenceExpression 报告错误的 qualifierType
当 useK2Uast=true 与重载函数一起使用时,Lint 误报
[BuildTool/Lint] ChecksSdkIntAtLeast 构造函数属性
Lint 集成
Lint 无法消除 KMP 依赖项的歧义

Android Gradle 插件 8.4.1

已修复问题
Android Gradle 插件
允许抑制关于 JDK 21 弃用对 Java 8 支持的警告
Dexer (D8)
java.lang.VerifyError: Verifier rejected class
新版本 R8 格式转换错误(混淆后)
中间构建可能没有完整的存根全局合成内容

Android Gradle 插件 8.4.2

已修复问题
Android Gradle 插件
AGP 8.4 似乎破坏了 CI 上的 GMD 下载