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)