Android Gradle 插件 DSL/API 迁移时间表

Android Gradle 插件 (AGP) 是受支持的 Android 应用构建系统,支持编译多种不同类型的源代码,以及将其链接到可在实体 Android 设备或模拟器上运行的应用中。

以下部分介绍了计划的 AGP DSL 和 API 的演变。随着新版 API 在稳定版本中推出,旧版 API 将标记为已废弃。这些废弃的 API 在下一个稳定版本中将不再可用。下面介绍了每个主要 AGP 版本中即将发生的变更。

AGP 7.0(2021 年上半年)

新版 Variant API 已稳定,旧版 API 已废弃

  • 在 4.1 和 4.2 中培育的 Variant API 已稳定。
  • 所有这些接口都位于 gradle-api 工件中。
  • 旧版 Variant API 中使用的旧版接口和类现已废弃。

AGP 7.1(2021 年下半年)

新版 DSL 接口已稳定,旧版 DSL 接口已废弃

  • 在 4.1、4.2 和 7.0 中培育的 DSL 接口现已稳定。
  • 所有这些接口都位于 gradle-api 工件中。
  • DSL 中使用的旧版接口和类现已废弃。

在编写插件时,现在建议仅依赖 gradle-api 工件,以便仅使用新版接口和类。这里有一个小小的例外情况,那就是以下插件类将在 8.0 中迁移到 gradle-api

仍然可以访问私有内部 AGP 类

在编译 build 文件的过程中,您仍然可以访问位于其他工件中的私有内部 AGP 类,但建议您使用它们,因为它们随时都有可能发生重大变化。

AGP 8.0(2022 年上半年)

旧版 API 已移除

  • DSL 和旧版 Variant API 中使用的所有旧版接口和类均已删除
  • gradle-api 工件是访问 DSL 和 variant API 接口及类所需的唯一工件,在开发插件时应使用该工件。
  • gradle-api 工件使用 Gradle 元数据(可为编译和运行时提供不同的依赖项关系图),在编译 build 文件时,只有该工件可用。

仍然可以访问私有内部 AGP 类

如果工件在编译类路径(对于插件和 build 文件)中使用私有内部 AGP 类,您仍然可以手动设置对这些工件的依赖关系,但不建议这样做,因为 9.0 中将移除该访问权限。

AGP 9.0(2023 年上半年)

对私有内部 AGP 类的访问权限已移除

gradle 工件的依赖项现在会隐藏所有内部类,并仅针对 gradle-api 工件中可用的接口和类提供编译权限。这同时会影响插件和 build 文件的编译。

您无法手动添加依赖项来获取对内部类的访问权限。