Android Gradle 插件 8.2.0(2023 年 11 月)
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
Android Gradle 插件 8.2.0 是一个主要版本,包含各种新功能和改进。
兼容性
Android Gradle 插件 8.2 支持的 API 级别上限为 API 级别 34。以下是其他兼容性信息:
|
最低版本 |
默认版本 |
备注 |
Gradle |
8.2 |
8.2 |
如需了解详情,请参阅更新 Gradle。 |
SDK Build Tools |
34.0.0 |
34.0.0 |
安装或配置 SDK Build Tools。 |
NDK |
不适用 |
25.1.8937393 |
安装或配置其他版本的 NDK。 |
JDK |
17 |
17 |
如需了解详情,请参阅设置 JDK 版本。 |
用于指定 JDK 路径的新宏
#GRADLE_LOCAL_JAVA_HOME
是一个新宏,可用于指定 JDK 路径。这样,您就可以更安全、更轻松地指定用于为项目执行 Gradle 守护程序(后台进程)的 Java 主路径。路径选择存储在 .gradle/config.properties
文件的 java.home
字段中。您可以通过 Android Studio 中的 Gradle JDK 设置设置此字段:File(在 macOS 上为 Android Studio)> Settings > Build, Execution, Deployment > Build Tools > Gradle。
新项目将默认使用 #GRADLE_LOCAL_JAVA_HOME
。成功同步后,现有项目将自动迁移到新宏,除非您已在使用类似 #JAVA_HOME
的宏。
新宏的主要优势如下:
- 您可以手动修改 JDK 路径以触发同步,而无需先打开项目。
- 与不兼容的 Gradle 和项目 JDK 版本相关的错误更少,因为 Gradle JDK 选择只有一个可信来源。
修复的问题
Android Gradle 插件 8.2.0
已修复的问题 |
Android Gradle 插件 |
自定义源代码类型应创建多变种源代码集
|
SDK 版本检查不会处理 SDK 扩展的用户
|
DependenciesInfoBuilder 需要 API 更新 + 文档
|
由于缺少嵌套成员,带 Java 11 目标的 DexingNoClasspathTransform (minSdk >= 24) 执行失败
|
DslExtension.Builder.extendProjectWith() 在 Groovy 中无法像所描述的那样运行
|
添加不使用 kotlin.Pair 的 VariantSelector.withFlavor API
|
AndroidLintAnalysisTask ( :lintAnalyzeExternalRelease) 缓存未命中,原因是“proguard.txt”已发生更改
|
应用合并后的清单包含依赖项中的 extractNativeLibs 和 useEmbeddedDex 属性
|
AIDL 不支持 build-tools 33.0.0
|
AGP:将 AIDL 工具和框架 AIDL 文件的路径显示为公共 API
|
请求:让 IDE 修复“PermittedSubclasses requires ASM9”
|
编译 AGP 时,以字节码 17 为目标
|
移除 VariantManager.getModifiedName
|
AndroidTest.installation.jniLibs.keepDebugSymbols 对 androidTest 打包没有影响
|
GMD 插桩测试任务挂起,并在重试时开始失败
|
agp 8.1.0 中的 generateLocaleConfig 使用非确定性排序,破坏了可重现的 build
|
ProcessApplicationManifest.navigationJsons 包含具有绝对路径的文件
|
创建 AnalyticsService 之后,系统不允许通过 AnalyticsConfiguratorService 访问 GradleBuildProject.Builder
|
AndroidTest.installation.jniLibs.keepDebugSymbols 对 androidTest 打包没有影响
|
允许非法颜色值进行编译
|
VariantBuilder 的“ReplaceWith”不正确
|
Gradle 8.1 因 .gradle/.android/analytics.settings 而破坏配置缓存
|
废弃消息不使用“ReplaceWith”
|
公开用于获取默认 NDK 版本的方法
|
Android Gradle 插件需要 Java 17 才能运行。
|
ASM 转换和 toAttach() 不兼容
|
修复了在 KMP 项目上通过 Gradle 使用 K2 UAST 运行 lint 时出现的 LintErrors
|
支持变体一级 missingDimensionStrategy,可能还支持 build 类型/变种 matchingFallback
|
从 Android Studio Giraffe 中移除了“android.jected.studio.version”
|
添加停用 AndroidXDependencyCheck 的功能
|
agp 8.1.0 中的 generateLocaleConfig 使用非确定性排序,破坏了可重现的 build
|
在 AAR 元数据中通告 R8/D8 版本要求(例如,针对 coreLibraryDesugaring 和新 API 违规)
|
同步警告:“GradleBuildProject.Builder should not be accessed through AnalyticsConfiguratorService after AnalyticsService is created”
|
更新至 Gradle 8.2 里程碑或 RC
|
无法访问“java.lang.Comparable”
|
Android 库模块中不提供 androidResources
|
将 AGP 从 8.0.2 更新到 8.1.0 后,任务“:app:mergeReleaseClasses”执行失败
|
Gradle 8.1 会因 .gradle/.android/analytics.settings 而破坏配置缓存
|
[AGP 8.1.0] 如果 splits.abi.isEnable 和 testOptions.unitTests.isIncludeAndroidResources 均为 True,则 ./gradlew 测试会失败,并且会显示消息“Unable to find manifest output”
|
使用 AGP 8.1 时,Android Studio Giraffe 不遵从 versionCodeOverride
|
AGP 8.1.0 会在运行插桩测试后卸载应用 - 7.4.2 不会
|
转换 APK 会导致 ListingFileRedirectTask 出错
|
Hedgehog 回归:“Run”按钮会延迟几秒钟(正在制定规范)
|
|
Dexer (D8) |
在对最低 API 级别为 34 及以上级别执行 dex 处理时,启用原生记录和密封类
|
|
lint |
实例化的 lint 检查无法妥善处理 AppComponentFactory
|
lint 8.2.0 Alpha 版仍不支持 Kotlin 中的顶级函数导入
|
添加一个不在 lint 基准中包含行号和列号的选项
|
添加一个不在 lint 基准中包含行号和列号的选项
|
lint 测试不支持 Java 17 语言功能
|
Bumblebee 2021.1.1 Patch 1 表示 commons-io 的旧版本 (20030203.000550) 高于 2.11.0。
|
lint 8.2.0 Alpha 版仍不支持 Kotlin 中的顶级函数导入
|
Bumblebee 2021.1.1 Patch 1 表示 commons-io 的旧版本 (20030203.000550) 高于 2.11.0。
|
Android Studio 错误地将指定版本标记为过时。
|
使用 K2 UAST 时,lint 会忽略 UseValueOf 问题
|
Android Lint 标记的另一个项目中出现意外问题
|
Android Lint 在 KMP 库上失败,并提示属性“variantInputs.name”没有配置值。
|
|
lint 集成 |
来自 testImplementation 依赖项的 DuplicatePlatformClasses lint 错误
|
|
缩减器 (R8) |
java.lang.VerifyError: Verifier rejected class
|
使用 Apache POI 库时,Build 会在 :minifyReleaseWithR8 上卡住
|
如果去除 null 检查,Kotlin 1.9 会导致 R8 销毁 Kotlin lambda
|
|
Android Gradle 插件 8.2.1
已修复的问题 |
Android Gradle 插件 |
如果子项目的类已通过工件转换进行 dex 处理,不对这些类运行 dexing 任务
|
Android Gradle 插件在使用 JavaVersion.VERSION_11 和 OpenJDK 21 ea 时运行失败
|
|
Dexer (D8) |
|
缩减器 (R8) |
R8 生成损坏的 dex,导致在运行时产生类转换异常
|
R8 导致接口更改为无法访问的接口
|
R8 Flurry SDK 在使用 AGP 8.2.0 时发生崩溃
|
Android - R8 导致 LinearLayoutManager 的子类崩溃
|
当重新打包处于开启状态且缩减、混淆和优化功能关闭时,R8 中出现 ClassCastException
|
R8 卡在 BridgeAnalyzer.analyzeMethod 中
|
R8 v8.2.33,在升级后运行时发生崩溃“java.lang.VerifyError: Bad type on operand stack”
|
|
Android Gradle 插件 8.2.2
已修复的问题 |
Android Gradle 插件 |
无法在 AGP 8.2.0 中设置 JaCoCo 版本
|
|
Dexer (D8) |
[脱糖库] 脱糖库版本 2.1 与之前的 R8 版本不兼容
|
即使仅使用 D8 也会运行优化吗?
|
|
缩减器 (R8) |
[R8 8.3.21] R8 8.3.21 比 R8 8.1.56 大 1.57MB
|
class.getInterfaces() 返回空
|
|
本页面上的内容和代码示例受内容许可部分所述许可的限制。Java 和 OpenJDK 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-02-28。
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["没有我需要的信息","missingTheInformationINeed","thumb-down"],["太复杂/步骤太多","tooComplicatedTooManySteps","thumb-down"],["内容需要更新","outOfDate","thumb-down"],["翻译问题","translationIssue","thumb-down"],["示例/代码问题","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2025-02-28。"],[],[]]