Android Gradle 插件 3.1.0(2018 年 3 月)
此版本的 Android 插件需要使用以下工具:
最低版本 | 默认版本 | 备注 | |
---|---|---|---|
Gradle | 4.4 | 4.4 | 如需了解详情,请参阅更新 Gradle。 |
SDK Build Tools | 27.0.3 | 27.0.3 | 安装或配置 SDK Build Tools。请注意,您不必再使用 android.buildToolsVersion 属性指定 Build Tools 的版本。默认情况下,该插件会使用所需的最低版本。 |
新的 DEX 编译器 (D8)
默认情况下,Android Studio 现在会使用名为 D8 的新 DEX 编译器。DEX 编译是指针对 Android 运行时(对于较早版本的 Android,则针对 Dalvik)将 .class
字节码转换为 .dex
字节码的过程。与之前的编译器(称为 DX)相比,D8 的编译速度更快,输出的 DEX 文件更小,同时却能保持相同甚至更出色的应用运行时性能。
D8 应该不会改变您的日常应用开发工作流程。但是,如果您遇到与新编译器有关的任何问题,请报告 bug。您可以在项目的 gradle.properties
文件中添加以下代码,暂时停用 D8 并使用 DX:
android.enableD8=false
对于使用 Java 8 语言功能的项目,系统会默认启用增量脱糖。您可以在项目的 gradle.properties
文件中添加以下代码,停用增量脱糖:
android.enableIncrementalDesugaring=false.
预览版用户:如果您已在使用预览版 D8,则请注意,D8 现在会针对 SDK Build Tools(而非 JDK)中包含的库进行编译。因此,如果您访问的 API 存在于 JDK 而非 SDK Build Tools 库中,则会收到编译错误。
行为变更
-
在构建分别以不同 ABI 为目标的多个 APK 时,默认情况下,插件不会再针对以下 ABI 生成 APK:
mips
、mips64
和armeabi
。如果您想构建以上述 ABI 为目标的 APK,必须使用 NDK r16b 或更低版本,并在
build.gradle
文件中指定这些 ABI,如下所示:splits { abi { include 'armeabi', 'mips', 'mips64' ... } }
splits { abi { include("armeabi", "mips", "mips64") ... } }
-
现在,Android 插件的构建缓存会排除超过 30 天的缓存条目。
-
将
"auto"
传递给resConfig
不会再自动选择要打包到 APK 中的字符串资源。如果继续使用"auto"
,该插件会打包应用及其依赖项提供的所有字符串资源。因此,您应该指定希望插件打包到 APK 中的各个语言区域。 -
由于本地模块不能依赖应用的测试 APK,因此使用
androidTestApi
配置(而非androidTestImplementation
)将依赖项添加到插桩测试中会导致 Gradle 发出以下警告:WARNING: Configuration 'androidTestApi' is obsolete and has been replaced with 'androidTestImplementation'
WARNING: Configuration 'androidTestApi' is obsolete and has been replaced with 'androidTestImplementation'
修复的问题
- 修复了 Android Studio 无法正确识别复合构建中的依赖项这一问题。
- 修复了以下问题:如果在进行单次构建时多次加载 Android 插件(例如,有多个子项目,并且每个子项目的 buildscript 类路径中都包含 Android 插件),您会遇到项目同步错误。