Android Gradle 插件 3.2.0(2018 年 9 月)

此版本的 Android 插件需要满足以下条件

最低版本 默认版本 备注
Gradle 4.6 4.6 要了解详情,请参阅更新 Gradle
SDK Build Tools 28.0.3 28.0.3 安装配置 SDK Build Tools。

3.2.1(2018 年 10 月)

进行此更新后,您无需再为 SDK Build Tools 指定版本。Android Gradle 插件现在默认使用版本 28.0.3。

新功能

  • 支持构建 Android App Bundle:App Bundle 是一种新的上传格式,它包含应用的所有已编译代码和资源,同时将 APK 生成和签名推迟到 Google Play 商店。您不再需要构建、签名和管理多个 APK,而且用户可以获得针对其设备优化的更小的下载文件。要了解详情,请阅读关于 Android App Bundle

  • 支持在使用注解处理器时提高增量构建速度:AnnotationProcessorOptions DSL 现在扩展了 CommandLineArgumentProvider,这使您或注解处理器作者能够使用增量构建属性类型注解为处理器注解参数。使用这些注解可以提高增量构建和缓存清除构建的正确性和性能。要了解详情,请阅读将参数传递给注解处理器

  • AndroidX 迁移工具:当使用 Android Gradle 插件 3.2.0 及更高版本时,您可以通过从菜单栏中选择 Refactor > Migrate to AndroidX 来迁移项目的本地和 Maven 依赖项,以使用新的 AndroidX 库。使用此迁移工具也会在 gradle.properties 文件中将以下标志设置为 true

    • android.useAndroidX设置为 true 时,Android 插件会使用相应的 AndroidX 库而非支持库。如果未指定此标志,插件默认将其设置为 false

    • android.enableJetifier设置为 true 时,Android 插件会自动通过重写第三方库的二进制文件来将其迁移到 AndroidX。如果未指定此标志,插件默认将其设置为 false。只有在 android.useAndroidX 也设置为 true 时,才能将此标志设置为 true,否则会遇到构建错误。

      要了解详情,请阅读AndroidX 概览

  • 新的代码缩减器 R8:R8 是一个用于代码缩减和混淆的新工具,它取代了 ProGuard。您可以通过在项目的 gradle.properties 文件中包含以下内容来开始使用 R8 的预览版

            android.enableR8 = true
            
            android.enableR8 = true
            

行为变更

  • 默认情况下,使用 D8 进行脱糖处理已启用。

  • AAPT2 现在已在 Google 的 Maven 仓库中。要使用 AAPT2,请确保您的 build.gradle 文件中包含 google() 依赖项,如下所示

              buildscript {
                    repositories {
                        google() // here
                        jcenter()
                    }
                    dependencies {
                        classpath 'com.android.tools.build:gradle:3.2.0'
                    }
                }
                allprojects {
                    repositories {
                        google() // and here
                        jcenter()
                }
              
              buildscript {
                    repositories {
                        google() // here
                        jcenter()
                    }
                    dependencies {
                        classpath 'com.android.tools.build:gradle:3.2.0'
                    }
                }
                allprojects {
                    repositories {
                        google() // and here
                        jcenter()
                }
              
  • 默认情况下,原生 multidex 现已启用。旧版本的 Android Studio 在将应用的调试版本部署到运行 Android API 级别 21 或更高版本的设备时,会启用原生 multidex。现在,无论您是部署到设备还是构建用于发布的 APK,Android Gradle 插件都会为所有设置 minSdkVersion=21 或更高版本的模块启用原生 multidex。

  • 该插件现在强制要求 protobuf 插件 (0.8.6)、Kotlin 插件 (1.2.50) 和 Crashlytics 插件 (1.25.4) 的最低版本。

  • 特性模块插件 com.android.feature 现在强制要求在指定模块名称时只能使用字母、数字和下划线。例如,如果您的特性模块名称包含破折号,就会出现构建错误。此行为与动态特性插件一致。

问题修复

  • JavaCompile 现在在包含数据绑定的项目中可缓存。(问题 #69243050
  • 改进了包含数据绑定的库模块的编译规避。(问题 #77539932
  • 如果之前版本中因某些不可预测的构建错误而禁用了按需配置,现在可以重新启用。(问题 #77910727