Android Gradle 插件 3.3.0(2019 年 1 月)

此版本的 Android 插件需要以下内容

最低版本 默认版本 备注
Gradle 4.10.1 4.10.1 要了解更多信息,请参阅更新 Gradle。使用 Gradle 5.0 及更高版本时,默认 Gradle 守护进程内存堆大小从 1 GB 减少到 512 MB。这可能会导致构建性能下降。要覆盖此默认设置,请在项目的 gradle.properties 文件中指定 Gradle 守护进程堆大小。
SDK Build Tools 28.0.3 28.0.3 安装配置 SDK Build Tools。

3.3.3(2020 年 7 月)

此次小幅更新支持与 Android 11 中的包可见性的新默认设置和功能的兼容性。

有关详细信息,请参阅4.0.1 版本说明

3.3.2(2019 年 3 月)

此小幅更新支持 Android Studio 3.3.2,并包含各种错误修复和性能改进。要查看值得注意的错误修复列表,请阅读版本更新博客上的相关帖子。

3.3.1(2019 年 2 月)

此小幅更新支持 Android Studio 3.3.1,并包含各种错误修复和性能改进。

新功能

  • 改进的类路径同步:在解析运行时和编译时类路径上的依赖项时,Android Gradle 插件尝试修复多个类路径上出现的依赖项的某些下游版本冲突。

    例如,如果运行时类路径包含库 A 版本 2.0,而编译时类路径包含库 A 版本 1.0,则插件会自动将编译时类路径上的依赖项更新为库 A 版本 2.0,以避免错误。

    但是,如果运行时类路径包含库 A 版本 1.0,而编译时类路径包含库 A 版本 2.0,则插件不会将编译时类路径上的依赖项降级到库 A 版本 1.0,您将收到错误。要了解更多信息,请参阅修复类路径之间的冲突

  • 使用注释处理器时改进的增量 Java 编译:此更新通过改进对使用注释处理器时增量 Java 编译的支持来减少构建时间。

    注意:此功能与 Gradle 4.10.1 及更高版本兼容,但由于Gradle 问题 8194而与 Gradle 5.1 不兼容。

    • 对于使用 Kapt 的项目(大多数仅限 Kotlin 的项目和 Kotlin-Java 混合项目):即使您使用数据绑定或 retro-lambda 插件,增量 Java 编译也会启用。Kapt 任务的注释处理尚不是增量的。

    • 对于不使用 Kapt 的项目(仅限 Java 的项目):如果您使用的注释处理器都支持增量注释处理,则默认情况下会启用增量 Java 编译。要监控增量注释处理器采用情况,请关注Gradle 问题 5277

      但是,如果一个或多个注释处理器不支持增量构建,则不会启用增量 Java 编译。您可以改为在项目的gradle.properties文件中包含以下标志

      android.enableSeparateAnnotationProcessing=true
                  

      包含此标志后,Android Gradle 插件会在单独的任务中执行注释处理器,并允许 Java 编译任务增量运行。

  • 使用过时 API 时更好的调试信息:当插件检测到您正在使用不再支持的 API 时,它现在可以提供更详细的信息来帮助您确定该 API 的使用位置。要查看其他信息,您需要在项目的gradle.properties文件中包含以下内容

              android.debug.obsoleteApi=true
            

    您还可以通过从命令行传递-Pandroid.debug.obsoleteApi=true来启用此标志。

  • 您可以通过命令行运行特性模块的 Instrumentation 测试。

行为变更

  • 延迟任务配置:该插件现在使用Gradle 的新的任务创建 API来避免初始化和配置完成当前构建不需要的任务(或不在执行任务图上的任务)。例如,如果您有多个构建变体,例如“release”和“debug”构建变体,并且您正在构建应用的“debug”版本,则插件会避免初始化和配置应用“release”版本的任务。

    调用 Variants API 中某些较旧的方法,例如variant.getJavaCompile(),仍然可能会强制进行任务配置。为了确保您的构建针对延迟任务配置进行了优化,请调用改为返回TaskProvider 对象的新方法,例如variant.getJavaCompileProvider()

    如果您执行自定义构建任务,请了解如何适应 Gradle 的新的任务创建 API

  • 对于给定的构建类型,当设置useProguard false时,插件现在使用 R8 而不是 ProGuard 来缩减和混淆应用的代码和资源。要了解有关 R8 的更多信息,请阅读 Android 开发者博客的这篇博文

  • 更快的库项目 R 类生成:以前,Android Gradle 插件会为项目的每个依赖项生成一个R.java文件,然后将这些 R 类与应用的其他类一起编译。该插件现在直接生成包含应用已编译 R 类的 JAR 文件,无需先构建中间R.java类。此优化可能会显著提高包含许多库子项目和依赖项的项目的构建性能,并提高 Android Studio 中的索引速度。

  • 构建Android App Bundle时,从该应用包生成的、面向 Android 6.0(API 级别 23)或更高版本的 APK 现在默认包含未压缩的原生库版本。此优化避免了设备需要复制库,从而减小了应用的磁盘大小。如果您想禁用此优化,请将以下内容添加到您的gradle.properties文件中

    android.bundle.enableUncompressedNativeLibs = false
            
  • 该插件强制执行某些第三方插件的最低版本。

  • 单变体项目同步:同步您的项目和构建配置是让 Android Studio 了解项目结构的重要步骤。但是,对于大型项目,此过程可能非常耗时。如果您的项目使用多个构建变体,您现在可以通过将同步限制为当前选择的变体来优化项目同步。

    您需要使用 Android Studio 3.3 或更高版本以及 Android Gradle Plugin 3.3.0 或更高版本才能启用此优化。满足这些要求后,当您同步项目时,IDE 会提示您启用此优化。此优化在新项目中也默认启用。

    要手动启用此优化,请点击文件 > 设置 > 实验性 > Gradle(在 Mac 上为Android Studio > 首选项 > 实验性 > Gradle),然后选中仅同步活动变体复选框。

    注意:此优化完全支持包含 Java 和 C++ 语言的项目,并且对 Kotlin 有一定的支持。当为包含 Kotlin 内容的项目启用此优化时,Gradle 同步会在内部回退到使用完整变体。

  • 自动下载缺少的 SDK 包:此功能已扩展为支持 NDK。要了解更多信息,请阅读使用 Gradle 自动下载缺少的包

错误修复

  • Android Gradle 插件 3.3.0 修复了以下问题

    • 构建过程调用android.support.v8.renderscript.RenderScript而不是 AndroidX 版本,即使启用了 Jetifier
    • 由于androidx-rs.jar包含静态捆绑的annotation.AnyRes而导致冲突
    • 使用 RenderScript 时,您不再需要在build.gradle文件中手动设置 Build Tools 版本