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 属性指定构建工具的版本,插件默认使用最低所需版本。

新的 DEX 编译器 D8

默认情况下,Android Studio 现在使用名为 D8 的新的 DEX 编译器。DEX 编译是将 .class 字节码转换为 Android 运行时(或旧版 Android 的 Dalvik)的 .dex 字节码的过程。与之前的编译器 DX 相比,D8 编译速度更快,输出的 DEX 文件更小,同时具有相同或更好的应用运行时性能。

D8 不应该改变您日常的应用开发工作流程。但是,如果您遇到与新编译器相关的任何问题,请 报告错误。您可以通过在项目的 gradle.properties 文件中包含以下内容来临时停用 D8 并使用 DX

      android.enableD8=false
    

对于 使用 Java 8 语言功能 的项目,增量反糖化默认启用。您可以在项目的 gradle.properties 文件中指定以下内容来停用它

      android.enableIncrementalDesugaring=false.
    

预览用户:如果您已经在使用 D8 的预览版,请注意它现在针对 SDK 构建工具 中包含的库进行编译,而不是 JDK。因此,如果您访问存在于 JDK 中但在 SDK 构建工具库中不存在的 API,则会收到编译错误。

行为变更

  • 在构建每个目标不同的 ABI 的多个 APK 时,不再默认生成以下 ABI 的 APK:mipsmips64armeabi

    如果您想构建目标这些 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)向您的已 instrumentation 测试添加依赖项会导致 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 插件时)出现项目同步错误的问题。