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: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 向插桩测试添加依赖项,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 插件)时出现项目同步错误的问题。