本页面包含 Android Gradle 插件 (AGP) 预览版的版本说明。
Android Gradle 插件 9.0
Android Gradle 插件 9.0 是 AGP 的一个全新主要版本,带来了 API 和行为变更。
如需更新到 Android Gradle 插件 9.0.0-rc03,请在 Android Studio Panda | 2025.3.1 中使用 Android Gradle 插件升级助理。
AGP 升级助理有助于在升级项目时尽可能保留现有行为,即使您尚未准备好采用 AGP 9.0 中的所有新默认设置,也可以升级项目以使用 AGP 9.0。
兼容性
Android Gradle 插件 9.0.0-rc03 支持的最高 Android API 级别为 API 级别 36。
Android Gradle 插件 9.0.0-rc03 需要 Gradle 9.0.0。
| 最低版本 | 默认版本 | 备注 | |
|---|---|---|---|
| Gradle | 9.1.0 | 9.1.0 | 如需了解详情,请参阅更新 Gradle。 |
| SDK Build Tools | 36.0.0 | 36.0.0 | 安装或配置 SDK Build Tools。 |
| NDK | 不适用 | 28.2.13676358 | 安装或配置其他版本的 NDK。 |
| JDK | 17 | 17 | 如需了解详情,请参阅设置 JDK 版本。 |
android DSL 类现在仅实现新的公共接口
在过去几年中,我们为 DSL 和 API 引入了新接口,以便更好地控制哪些 API 是公开的。AGP 版本 7.x 和 8.x 仍使用旧的 DSL 类型(例如 BaseExtension),这些类型也实现了新的公共接口,以便在接口开发过程中保持兼容性。
AGP 9.0 专门使用新的 DSL 接口,并且实现已更改为完全隐藏的新类型。此权限还会移除对已废弃的旧版变体 API 的访问权限。
如需更新到 AGP 9.0,您可能需要执行以下操作:
- 确保您的项目与内置 Kotlin 兼容:
org.jetbrains.kotlin.android插件与新 DSL 不兼容。 将 KMP 项目切换到 Android Gradle Library Plugin for KMP:在与
com.android.library和com.android.application插件相同的 Gradle 子项目中同时使用org.jetbrains.kotlin.multiplatform插件与新的 DSL 不兼容。更新 build 文件:虽然接口的更改旨在尽可能保持 DSL 的相似性,但可能仍会存在一些细微的更改。
更新自定义 build 逻辑以引用新的 DSL 和 API: 将对内部 DSL 的所有引用替换为公共 DSL 接口。 在大多数情况下,这会是一对一的替换。 将所有使用
applicationVariants和类似 API 的情况替换为新的androidComponentsAPI。这可能更复杂,因为androidComponentsAPI 的设计旨在提高稳定性,以使插件能够更长时间地保持兼容。如需查看示例,请参阅我们的 Gradle 诀窍。更新第三方插件:某些第三方插件可能仍依赖于不再公开的接口或 API。迁移到与 AGP 9.0 兼容的插件版本。
切换到新的 DSL 接口可防止插件和 Gradle build 脚本使用各种已弃用的 API,包括:
android 块中的已弃用 API |
功能 | 替换 |
|---|---|---|
applicationVariants、libraryVariants、testVariants 和unitTestVariants
|
插件的扩展点,用于向 AGP 添加新功能。 |
将其替换为 androidComponents.onVariants API,例如:
androidComponents { onVariants() { variant -> variant.signingConfig .enableV1Signing.set(false) } } |
variantFilter
|
允许停用所选变体。 |
请将此替换为 androidComponents.beforeVariants API,例如:
androidComponents { beforeVariants( selector() .withBuildType("debug") .withFlavor("color", "blue") ) { variantBuilder -> variantBuilder.enable = false } } |
deviceProvider 和testServer
|
注册自定义测试环境,以便针对 Android 设备和模拟器运行测试。 | 切换到 Gradle 管理的设备。 |
sdkDirectory、ndkDirectory、bootClasspath、adbExecutable和adbExe
|
使用 Android SDK 的各种组件执行自定义任务。 |
切换到 androidComponents.sdkComponents。
|
registerArtifactType、registerBuildTypeSourceProvider、registerProductFlavorSourceProvider、registerJavaArtifact、registerMultiFlavorSourceProvider和wrapJavaSourceSet |
过时的功能主要与 Android Studio 中生成的源代码的处理有关,这些功能在 AGP 7.2.0 中已停止运行。 | 这些 API 没有直接替代方案。 |
dexOptions
|
与 dx 工具相关的过时设置,该工具已被 d8 取代。自 Android Gradle 插件 7.0 以来,所有这些设置均已失效。
|
没有直接替代项。 |
generatePureSplits
|
为免安装应用生成配置拆分。 | 现在,Android App Bundle 内置了交付配置拆分项的功能。 |
aidlPackagedList
|
要打包在 AAR 中以将其作为 API 公开给依赖于此库的库和应用的 AIDL 文件。 |
此属性仍会在 LibraryExtension 上公开,但不会在其他扩展类型上公开。
|
如果您更新到 AGP 9.0 后看到以下错误消息,则表示您的项目仍在引用一些旧类型:
java.lang.ClassCastException: class com.android.build.gradle.internal.dsl.ApplicationExtensionImpl$AgpDecorated_Decorated
cannot be cast to class com.android.build.gradle.BaseExtension
如果您因不兼容的第三方插件而受阻,可以选择停用这些插件,并恢复 DSL 的旧实现以及旧的变体 API。在执行此操作时,新接口也可用,您仍然可以将自己的 build 逻辑更新为新 API。如要选择停用,请在 gradle.properties 文件中添加以下行:
android.newDsl=false
您也可以先升级到新 API,然后再升级到 AGP 9.0。新接口已存在于多个 AGP 版本中,因此您可以混合使用新接口和旧接口。AGP API 参考文档显示了每个 AGP 版本的 API 表面,以及每个类、方法和字段的添加时间。
在 9.0 Alpha 阶段,我们会与插件作者联系,帮助他们调整并发布与新模式完全兼容的插件,并增强 Android Studio 中的 AGP 升级助理,以指导您完成迁移。
如果您发现新的 DSL 或 Variant API 缺少功能或特性,请尽快提交问题。
内置 Kotlin
Android Gradle 插件 9.0 引入了内置 Kotlin 支持,并默认启用该支持。这意味着,您无需再在 build 文件中应用 org.jetbrains.kotlin.android(或 kotlin-android)插件来编译 Kotlin 源文件。这简化了 Kotlin 与 AGP 的集成,避免了使用已弃用的 API,并在某些情况下提高了性能。
因此,当您将项目升级到 AGP 9.0 时,还需要迁移到内置 Kotlin 或选择停用。
您还可以为没有 Kotlin 源的 Gradle 子项目选择性地停用内置 Kotlin 支持。
对 Kotlin Gradle 插件的运行时依赖项
为了提供内置 Kotlin 支持,Android Gradle 插件 9.0 现在对 Kotlin Gradle 插件 (KGP) 2.2.10 具有运行时依赖项。这意味着您不再需要声明 KGP 版本,并且如果您使用的 KGP 版本低于 2.2.10,Gradle 会自动将您的 KGP 版本升级到 2.2.10。 同样,如果您使用的 KSP 版本低于 2.2.10-2.0.2,AGP 会将其升级到 2.2.10-2.0.2,以与 KGP 版本保持一致。
升级到更高的 KGP 版本
如需使用更高版本的 KGP 或 KSP,请将以下内容添加到顶级 build 文件中:
buildscript {
dependencies {
// For KGP
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:KGP_VERSION")
// For KSP
classpath("com.google.devtoolsksp:symbol-processing-gradle-plugin:KSP_VERSION")
}
}
降级到较低的 KGP 版本
只有在选择不使用内置 Kotlin 的情况下,您才能降级 KGP 版本。这是因为 AGP 9.0 默认启用内置 Kotlin,而内置 Kotlin 需要 KGP 2.2.10 或更高版本。
如需使用较低版本的 KGP 或 KSP,请使用严格版本声明在顶级 build 文件中声明该版本:
buildscript {
dependencies {
// For KGP
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") {
version { strictly("KGP_VERSION") }
}
// For KSP
classpath("com.google.devtoolsksp:symbol-processing-gradle-plugin") {
version { strictly("KSP_VERSION") }
}
}
}
请注意,您可以降级的最低 KGP 版本为 2.0.0。
IDE 对测试固件的支持
AGP 9.0 为测试装置带来了全面的 Android Studio IDE 支持。
Fused 库插件
借助 Fused Library 插件(预览版),您可以将多个库发布为单个 Android 库 AAR。这样一来,用户就可以更轻松地依赖您发布的制品。
如需了解相关入门信息,请参阅使用融合库将多个 Android 库作为一个库发布。
行为变更
Android Gradle 插件 9.0 具有以下新行为:
| 行为 | 建议 |
|---|---|
Android Gradle 插件 9.0 默认使用 NDK 版本 r28c。
|
请考虑明确指定要使用的 NDK 版本。 |
| Android Gradle 插件 9.0 默认要求库的消费者使用相同或更高的编译 SDK 版本。 |
使用库时,请使用相同或更高的编译 SDK。
如果无法做到这一点,或者您想为所发布库的消费者提供更多时间来切换,请明确设置 AarMetadata.minCompileSdk。
|
AGP 9.0 包含对以下 Gradle 属性默认值的更新。 这样一来,您就可以选择在升级时保留 AGP 8.13 的行为:
| 属性 | 功能 | 从 AGP 8.13 更改为 AGP 9.0 | 建议 |
|---|---|---|---|
android. |
使用新的 DSL 接口,而不公开 android 代码块的旧版实现。这也意味着,旧版变体 API(例如 android.applicationVariants)将无法再访问。
|
false → true |
您可以通过设置 android.newDsl=false 来选择停用。当项目使用的所有插件和 build 逻辑都兼容时,移除选择停用。 |
android. |
启用内置 Kotlin | false → true |
迁移到内置 Kotlin(如果可以)或选择停用。 |
android. |
强制要求每个库都有不同的软件包名称。 | false → true |
为项目中的所有库指定唯一的软件包名称。 如果无法实现,您可以在迁移时停用此标志。 |
android. |
默认情况下使用 androidx 依赖项。
|
false → true |
采用 androidx 依赖项。
|
android. |
默认情况下,使用 androidx.test.runner.AndroidJUnitRunner 类运行设备端测试,替换已弃用的 InstrumentationTestRunner 的默认值
android {
defaultConfig {
testInstrumentationRunner = "..."
}
} |
false → true |
采用 AndroidJUnitRunner,或者明确指定自定义 testInstrumentationRunner。
|
android. |
控制配置之间依赖项约束的使用。 AGP 9.0 中的默认值为 false,该值仅在应用设备测试 (AndroidTest) 中使用限制。
将此值设置为 true 将恢复为 8.13 版的行为。
|
true → false |
除非需要,否则请勿在所有位置使用依赖项限制。 接受此标志的新默认值还可以在项目导入过程中启用优化,从而缩短包含许多 Android 库子项目的 build 的导入时间。 |
android. |
针对非最终 R 类编译应用中的代码,使应用编译与库编译保持一致。 这有助于提高增量性,并为将来对资源处理流程进行性能优化奠定基础。 |
false → true |
许多项目只需采用新行为,无需更改源代码。 如果 R 类字段用于需要常量的位置(例如 switch 语句),请重构为使用链式 if 语句。 |
android. |
使用编译 SDK 版本作为应用和测试中目标 SDK 版本的默认值。 在此变更之前,目标 SDK 版本会默认设置为最低 SDK 版本。 |
false → true |
为应用和测试显式指定目标 SDK 版本。 |
android. |
仅为测试的 build 类型创建单元测试组件。 在默认项目中,这会生成一个用于调试的单元测试,而之前的行为是运行用于调试或发布的单元测试。 |
false → true |
如果您的项目不需要同时为调试和发布运行测试,则无需进行任何更改。 |
android. |
如果 AGP DSL 中指定的任何 keep 文件在磁盘上不存在,则构建会因错误而失败。在此变更之前,文件名中的拼写错误会导致文件被静默忽略。 | false → true |
移除所有无效的 ProGuard 文件声明 |
android. |
允许 R8 通过将类和 Android 资源一起考虑来保留更少的 Android 资源。 | false → true |
如果项目的保留规则已完善,则无需进行任何更改。 |
android. |
允许 R8 通过在保留类时不会隐式保留默认构造函数来减少保留的内容。
也就是说,-keep class A 不再意味着 -keep class A { <init>(); } |
false → true |
如果项目的保留规则已完成,则无需进行任何更改。
在项目的保留规则中,将 -keep class A 替换为 -keep class A { <init>(); },以保留默认构造函数。
|
android. |
在所有子项目中启用 resValues
|
true → false |
仅在需要 resValues 的子项目中启用该功能,方法是在这些项目的 Gradle build 文件中设置以下内容:
android {
buildFeatures {
resValues = true
}
} |
android. |
在所有子项目中启用着色器编译 | true → false |
仅在包含要编译的着色器的子项目中启用着色器编译,方法是在这些项目的 Gradle build 文件中设置以下内容:
android {
buildFeatures {
shaders = true
}
} |
android. |
在 AGP 9.0 中,getDefaultProguardFile() 将仅支持 proguard-android-optimize.txt,而不再支持 proguard-android.txt。这是为了防止意外使用 dontoptimize 标志,该标志包含在 proguard-android.txt 中。
|
false → true |
如果您想避免优化,除了使用 proguard-android-optimize.txt 之外,还可以在自定义 proguardFile 中明确指定 dontoptimize。请务必尽可能从此文件中移除 dontoptimize 标志,因为该标志会降低 R8 优化效果。如果不想参与,请设置 android.r8.globalOptionsInConsumerRules.disallowed=false 以选择不参与。
|
android. |
从 AGP 9.0 开始,如果消费者保留文件包含有问题的 Proguard 配置,Android 库和功能模块发布将会失败。包含 dontoptimize 或 dontobfuscate 等全局选项的消费者 keep 文件应仅在应用模块中使用,并且可能会降低库用户的优化效果。如果全局选项嵌入在预编译的依赖项(JAR 或 AAR)中,Android 应用模块编译会默默忽略所有此类全局选项。您可以通过检查 configuration.txt(通常位于 <app_module>/build/outputs/mapping/<build_variant>/configuration.txt 等路径中)中是否有如下注释来了解这种情况何时发生:# REMOVED CONSUMER RULE: dontoptimize
|
false → true |
已发布的库应移除所有不兼容的规则。内部库应将任何不兼容但必需的规则移至应用模块中的 proguardFile。通过设置 android.r8.globalOptionsInConsumerRules.disallowed=false 选择退出。当所有消费者保留文件都兼容后,移除选择退出。
|
android. |
禁止使用 AndroidSourceSet DSL 为生成的来源传递提供程序。
|
false → true |
使用 androidComponents 上的 Sources API 注册生成的来源。
|
android. |
如果启用了着色器编译,则需要在 local.properties 中显式设置着色器编译器路径。
|
false → true |
将 glslc.dir=/path/to/shader-tools 添加到项目的 local.properties 中。
|
已移除的功能
Android Gradle 插件 9.0 移除了以下功能:
- 嵌入式 Wear OS 应用支持
AGP 9.0 移除了对嵌入式 Wear OS 应用的支持,Play 中不再支持该功能。这包括移除wearApp配置和AndroidSourceSet.wearAppConfigurationNameDSL。如需了解如何将应用发布到 Wear OS,请参阅分发到 Wear OS 平台。 androidDependencies和sourceSets报告任务- 密度拆分 APK 支持
AGP 9.0 移除了对基于屏幕密度创建拆分 APK 的支持。已移除相应功能和相关 API。如需使用 AGP 9.0 或更高版本根据屏幕密度拆分 APK,请使用 app bundle。
更改后的 DSL
Android Gradle 插件 9.0 包含以下重大 DSL 变更:
移除了
CommonExtension的形参化。就其本身而言,这只是一个源代码级重大变更,旨在帮助避免未来出现源代码级重大变更,但这也意味着,块方法需要从
CommonExtension移至ApplicationExtension、LibraryExtension、DynamicFeatureExtension和TestExtension。将项目升级到 AGP 9.0 时,请重构使用这些参数或块方法的 Gradle 插件代码。例如,以下插件已更新,移除了类型形参,并且不再依赖于已移除的块方法:
AGP 8.13
val commonExtension: CommonExtension<*, *, *, *, *, *> = extensions.getByType(CommonExtension::class) commonExtension.apply { defaultConfig { minSdk { version = release(28) } } }AGP 9.0
val commonExtension: CommonExtension = extensions.getByType(CommonExtension::class) commonExtension.apply { defaultConfig.apply { minSdk { version = release(28) } } }对于以一系列 AGP 版本为目标的插件,直接使用 getter 在二进制方面与低于 9.0 的 AGP 版本兼容。
移除了 DSL
Android Gradle 插件 9.0 移除了以下内容:
AndroidSourceSet.jni,因为该功能无法正常运行。AndroidSourceSet.wearAppConfigurationName,因为这与已移除的嵌入式 Wear OS 应用支持有关。BuildType.isRenderscriptDebuggable,因为该功能无法正常运行。DependencyVariantSelection。它已替换为DependencySelection,后者以kotlin.android.localDependencySelection的形式公开Installation.installOptions(String)。它已被Installation.installOptions的可变属性取代。实验性但从未稳定过的
PostProcessing块。ProductFlavor.setDimension,已由dimension属性取代LanguageSplitOptions,仅对已弃用的 Google Play 免安装体验有用。DensitySplit,因为该功能不再受支持。 替代方案是使用 App Bundle。
已移除的 API
Android Gradle 插件 9.0 移除了以下内容:
Component.transformClassesWith。它已被Instrumentation.transformClassesWith取代Component.setAsmFramesComputationMode。它已被Instrumentation.setAsmFramesComputationMode取代DependenciesInfoBuilder.includedInBundle。已替换为includeInBundleVariant.unitTest,因为它不适用于com.android.test插件。unitTest可用于扩展HasUnitTest的VariantBuilder子类型。VariantBuilder.targetSdk和targetSdkPreview,因为它们在库中没有意义。请改用GeneratesApkBuilder.targetSdk或GeneratesApkBuilder.targetSdkPreview。VariantBuilder.enableUnitTest,因为它不适用于com.android.test插件。enableUnitTest可用于扩展HasUnitTestBuilder的VariantBuilder子类型。移除了
VariantBuilder.unitTestEnabled,取而代之的是在扩展HasUnitTestBuilder的VariantBuilder子类型上更一致命名的enableUnitTest。已弃用并停用的
FeaturePlugin和FeatureExtension。已废弃并停用的
BaseExtension.registerTransformAPI,这些 API 仅用于在以 AGP 4.2 或更低版本为目标平台的同时,允许针对最新 AGP 版本进行编译。
已移除的 Gradle 属性
以下 Gradle 属性最初添加的目的是全局停用默认启用的功能。
自 AGP 8.0 或更低版本以来,这些功能已默认停用。仅在使用这些功能的子项目中启用它们,以实现更高效的构建。
| 属性 | 功能 | 替换 |
|---|---|---|
android. |
在所有子项目中启用 AIDL 编译 |
仅在包含 AIDL 源文件的子项目中启用 AIDL 编译,方法是在这些项目的 Gradle build 文件中设置以下属性:
android {
buildFeatures {
aidl = true
}
} |
android. |
在所有子项目中启用 RenderScript 编译 |
仅在包含 renderscript 源的子项目中启用 renderscript 编译,方法是在这些项目的 Gradle build 文件中设置以下属性:
android {
buildFeatures {
renderScript = true
}
} |
强制执行的 Gradle 属性
如果您设置了以下 Gradle 属性,AGP 9.0 会抛出错误。
Android Gradle 插件升级助理不会将使用这些属性的项目升级到 AGP 9.0。
| 属性 | 功能 |
|---|---|
android. |
资源缩减现在始终作为 R8 的一部分运行,之前的实现已被移除。 |
android. |
资源缩减现在始终使用精确的资源缩减,这可以移除更多资源。 |
R8 变更
AGP 9.0.0 中包含以下 R8 变更。
新配置选项 -processkotlinnullchecks
我们添加了新的 R8 选项 -processkotlinnullchecks,用于配置 R8 以处理 Kotlin null 检查。此选项接受一个必需实参,该实参必须是以下三个值之一:keep、remove_message 和 remove。该选项会处理 Kotlin 编译器添加的以下 null 检查:
class kotlin.jvm.internal.Intrinsics {
void checkNotNull(java.lang.Object);
void checkNotNull(java.lang.Object, java.lang.String);
void checkExpressionValueIsNotNull(
java.lang.Object, java.lang.String);
void checkNotNullExpressionValue(
java.lang.Object, java.lang.String);
void checkReturnedValueIsNotNull(
java.lang.Object, java.lang.String);
void checkReturnedValueIsNotNull(
java.lang.Object, java.lang.String, java.lang.String);
void checkFieldIsNotNull(java.lang.Object, java.lang.String);
void checkFieldIsNotNull(
java.lang.Object, java.lang.String, java.lang.String);
void checkParameterIsNotNull(java.lang.Object, java.lang.String);
void checkNotNullParameter(java.lang.Object, java.lang.String);
}
选项值(按从最弱到最强的顺序排列)具有以下效果:
keep不会更改检查。remove_message会将每个检查方法调用重写为对调用第一个实参的getClass()的调用(有效保留 null 检查,但不包含任何消息)。remove会彻底移除检查。
默认情况下,R8 使用 remove_message。任何 -processkotlinnullchecks 的规范都会覆盖该值。如果多次指定,则使用最强的值。
停止将保留信息传播到辅助方法
如果 keep 规则与需要进行 desugaring 的接口方法匹配,R8 之前会在内部将禁止优化和禁止缩小位转移到合成的同伴方法。
从 AGP 9.0 开始,keep 规则不再适用于配套方法。这与以下事实一致:keep 规则不适用于其他编译器合成的字段/方法/类。
通过将 disallow optimization 和 disallow shrinking 位转移到配套方法,之前支持以下使用情形:
- 使用
default/static/private接口方法将库编译为 DEX,其中minSdk< 24,并且规则会保留接口方法。 - 编译 classpath 上包含该库的应用和
-applymapping。 - 合并应用和库。
请注意,这仅适用于 -applymapping,因为 disallow
obfuscation 位不会转移到配套方法,也就是说,从第 1 步生成的配套类将具有混淆的方法名称。
从今往后,minSdk < 24 不再支持此用例。解决方法是执行以下操作:
- 使用
default/static/private接口方法将库反糖化为minSdk< 24 的类文件。 - 使用 R8 和用于保留配套类上接口方法的规则编译脱糖制品。
- 使用类路径上的库编译应用。
- 合并应用和 desugared 制品。
此更改的另一个副作用是,无法再将匿名类和局部类的内部类和封装方法属性保留在接口伴生对象方法中。
将默认发出的源文件更改为 r8-map-id-<MAP_ID>
此项变更已在 AGP 8.12.0 及更高版本中实现。
当需要重新跟踪时(即启用混淆或优化时),类的默认发出的源文件属性会从 SourceFile 更改为 r8-map-id-<MAP_ID>。
给定一个经过混淆处理的堆栈轨迹,新的源文件属性可用于提取轨迹还原所需的映射文件 ID,从而支持 Logcat 中堆栈轨迹的自动轨迹还原。
如果使用自定义源文件属性 (-renamesourcefileattribute),此自定义源文件属性仍具有优先权。
在 ProGuard 兼容性模式下(当 gradle.properties 包含 android.enableR8.fullMode=false 时),仅当 SourceFile 属性未保留时,发出 r8-map-id-<MAP_ID> 的源文件属性才会生效。如果应用使用 ProGuard 兼容模式,并且希望在堆栈轨迹中包含映射文件 ID,则应移除 -keepattributes SourceFile(或迁移到 R8 完整模式)。
r8-map-id-<MAP_ID> 中使用的地图 ID 是完整的地图哈希,而不是之前使用的 7 个字符的地图哈希前缀。
在 L8 脱糖中使用最小化的合成名称
D8 生成的合成类的名称通常包含子字符串 $$ExternalSynthetic,用于指示这是由 D8 生成的合成类。
此外,合成类的名称还对合成类型(例如 Backport、Lambda)进行了编码。这会对生成的 DEX 大小产生负面影响,因为类名称会在字符串池中占用更多空间。
AGP 9.0 配置 L8(核心库 desugaring),以便包含所有 j$ 类的 DEX 文件为合成类使用新的缩短类名格式。新课程名称使用数字 ID(例如 $1)。
移除对 -addconfigurationdebugging 的支持
AGP 9.0 移除了对 -addconfigurationdebugging 的支持。如果使用该标志,编译器现在会报告警告。
移除了对从 D8/R8 生成 L8 规则的支持
此变更仅适用于直接使用 D8/R8 命令行或 API 的开发者。
R8 9.0 移除了对从 D8 和 R8 为 L8 生成 keep 规则的支持。您应改用 TraceReferences 来实现此目的。
更具体地说,移除了方法 D8Command.builder.setDesugaredLibraryKeepRuleConsumer 和 R8Command.Builder.setDesugaredLibraryKeepRuleConsumer,并从 D8 和 R8 的命令行选项中移除了对 --desugared-lib-pg-conf-output 的支持。
修复的问题
Android Gradle 插件 9.0.0-rc03
| 已修复的问题 | ||
|---|---|---|
| Android Gradle 插件 |
|
|
Android Gradle 插件 9.0.0-rc02
| 已修复的问题 | |
|---|---|
| 在 AGP 9.0.0-rc02 中,没有公开问题被标记为已修复 |
Android Gradle 插件 9.0.0-rc01
| 已修复的问题 | |
|---|---|
| 在 AGP 9.0.0-rc01 中,没有公开问题被标记为已修复 |
Android Gradle 插件 9.0.0-beta05
| 已修复的问题 | ||
|---|---|---|
| Android Gradle 插件 |
|
|
Android Gradle 插件 9.0.0-beta04
| 已修复的问题 | |||
|---|---|---|---|
| Android Gradle 插件 |
|
||
Android Gradle 插件 9.0.0-beta03
| 已修复的问题 | |
|---|---|
| 在 AGP 9.0.0-beta03 中,没有公开问题被标记为已修复 |
Android Gradle 插件 9.0.0-beta02
| 已修复的问题 | ||||
|---|---|---|---|---|
| Android Gradle 插件 |
|
|||
| lint |
|
|||
| lint 集成 |
|
|||
Android Gradle 插件 9.0.0-beta01
| 已修复的问题 | |
|---|---|
| 在 AGP 9.0.0-beta01 中,没有公开问题被标记为已修复 |
Android Gradle 插件 9.0.0-alpha14
| 已修复的问题 | |||||||
|---|---|---|---|---|---|---|---|
| Android Gradle 插件 |
|
||||||
| lint 集成 |
|
||||||
| 缩减器 (R8) |
|
||||||
Android Gradle 插件 9.0.0-alpha13
| 已修复的问题 | ||||
|---|---|---|---|---|
| Android Gradle 插件 |
|
|||
Android Gradle 插件 9.0.0-alpha12
| 已修复的问题 | |||||
|---|---|---|---|---|---|
| Android Gradle 插件 |
|
||||
Android Gradle 插件 9.0.0-alpha11
| 已修复的问题 | ||||
|---|---|---|---|---|
| Android Gradle 插件 |
|
|||
Android Gradle 插件 9.0.0-alpha10
| 已修复的问题 | ||||
|---|---|---|---|---|
| Android Gradle 插件 |
|
|||
| lint |
|
|||
Android Gradle 插件 9.0.0-alpha09
| 已修复的问题 | ||||
|---|---|---|---|---|
| Android Gradle 插件 |
|
|||
Android Gradle 插件 9.0.0-alpha08
| 已修复的问题 | |
|---|---|
| AGP 9.0.0-alpha08 中没有公开问题被标记为已修复 |
Android Gradle 插件 9.0.0-alpha07
| 已修复的问题 | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| Android Gradle 插件 |
|
||||||||
Android Gradle 插件 9.0.0-alpha06
| 已修复的问题 | |||||
|---|---|---|---|---|---|
| Android Gradle 插件 |
|
||||
| lint |
|
||||
Android Gradle 插件 9.0.0-alpha05
| 已修复的问题 | |||||
|---|---|---|---|---|---|
| Android Gradle 插件 |
|
||||
| lint |
|
||||
Android Gradle 插件 9.0.0-alpha04
| 已修复的问题 | ||||
|---|---|---|---|---|
| Android Gradle 插件 |
|
|||
| lint |
|
|||
Android Gradle 插件 9.0.0-alpha03
| 已修复的问题 | ||||
|---|---|---|---|---|
| Android Gradle 插件 |
|
|||
| lint |
|
|||
Android Gradle 插件 9.0.0-alpha02
| 已修复的问题 | ||||
|---|---|---|---|---|
| Android Gradle 插件 |
|
|||
Android Gradle 插件 9.0.0-alpha01
| 已修复的问题 | |||||||
|---|---|---|---|---|---|---|---|
| Android Gradle 插件 |
|
||||||