Android Gradle 插件 3.1.0(2018 年 3 月)
此版本的 Android 插件要求以下各项
最低版本 | 默认版本 | 注意 | |
---|---|---|---|
Gradle | 4.4 | 4.4 | 要了解详情,请参阅更新 Gradle。 |
SDK 构建工具 | 27.0.3 | 27.0.3 | 安装或配置 SDK 构建工具。请注意,您不再需要使用 android.buildToolsVersion 属性指定构建工具版本 — 插件默认使用所需的最低版本。 |
新的 DEX 编译器 D8
默认情况下,Android Studio 现在使用名为 D8 的新 DEX 编译器。DEX 编译是将 .class
字节码转换为面向 Android Runtime(对于旧版本 Android,则为 Dalvik)的 .dex
字节码的过程。与之前的 DX 编译器相比,D8 编译速度更快,输出的 DEX 文件更小,同时具有相同或更好的应用运行时性能。
D8 不会改变您的日常应用开发工作流程。但是,如果您遇到与新编译器相关的任何问题,请报告错误。您可以通过在项目的 gradle.properties
文件中包含以下内容来暂时停用 D8 并使用 DX
android.enableD8=false
对于使用 Java 8 语言功能的项目,默认情况下会启用增量 desugaring。您可以通过在项目的 gradle.properties
文件中指定以下内容来将其停用
android.enableIncrementalDesugaring=false.
预览版用户:如果您已经在使用 D8 的预览版本,请注意,它现在是针对SDK 构建工具中包含的库进行编译,而不是针对 JDK。因此,如果您正在访问 JDK 中存在但在 SDK 构建工具库中不存在的 API,则会收到编译错误。
行为变更
-
构建多个 APK 并分别针对不同的 ABI 时,默认情况下不再为以下 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 classpath 中都包含 Android 插件)时出现项目同步错误的问题。