Android Gradle 插件 3.2.0(2018 年 9 月)

此版本的 Android 插件需要使用以下工具:

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,这可让您或注解处理器创建者使用增量 build 属性类型注解来注解处理器的参数。使用这些注解可提高增量和缓存整洁 build 的正确性和性能。如需了解详情,请参阅向注解处理器传递参数部分。

  • 适用于 AndroidX 的迁移工具:在搭配使用 Android Gradle 插件 3.2.0 与 Android 3.2 及更高版本时,您可迁移项目的本地依赖项和 Maven 依赖项,以使用新的 AndroidX 库,方法是从菜单栏中依次选择 Refactor > Migrate to 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 现在强制要求仅使用字母、数字和下划线。例如,如果功能模块名称包含短划线,您会遇到构建错误。此行为与动态功能插件的行为相符。

bug 修复

  • JavaCompile 现在可以在具有数据绑定的项目中缓存。(问题 69243050
  • 为启用了数据绑定的库模块提供更好的避免编译功能。(问题 77539932
  • 如果您因为一些不可预知的构建错误而在早期版本中停用了按需配置,现在可以重新启用。(问题 77910727