Android Gradle 插件 2.2.0 (2016 年 9 月)

依赖项
最低版本 默认版本 备注
Gradle 2.14.1 2.14.1 要了解更多信息,请参阅 更新 Gradle
SDK Build Tools 23.0.2 23.0.2 安装配置 SDK Build Tools。
新增功能
  • 使用 Gradle 2.14.1,其中包含性能改进和新功能,并修复了使用 Gradle 守护程序时允许本地权限提升的安全漏洞。有关更多详细信息,请参阅 Gradle 发行说明
  • 使用 externalNativeBuild {} DSL,Gradle 现在允许您链接到本机源代码并使用 CMake 或 ndk-build 编译本机库。构建本机库后,Gradle 会将它们打包到您的 APK 中。要了解有关将 CMake 和 ndk-build 与 Gradle 配合使用的更多信息,请阅读 向您的项目添加 C 和 C++ 代码
  • 当您 从命令行运行构建 时,Gradle 现在会尝试自动下载项目依赖的任何缺少的 SDK 组件或更新。要了解更多信息,请阅读 使用 Gradle 自动下载缺少的软件包
  • 一项新的实验性缓存功能允许 Gradle 通过预 dex 化、存储和重用库的预 dex 化版本来加快构建速度。要了解有关使用此实验性功能的更多信息,请阅读 构建缓存 指南。
  • 通过采用新的默认打包管道来提高构建性能,该管道在一个任务中处理压缩、签名和 zipalign。您可以通过将 android.useOldPackaging=true 添加到您的 gradle.properties 文件中来恢复使用旧的打包工具。在使用新的打包工具时,zipalignDebug 任务不可用。但是,您可以通过调用 createZipAlignTask(String taskName, File inputFile, File outputFile) 方法自己创建一个。
  • APK 签名现在除了使用传统的 JAR 签名之外,还使用 APK 签名方案 v2。所有 Android 平台都接受生成的 APK。签名后对这些 APK 的任何修改都会使它们的 v2 签名失效,并阻止在设备上安装。要停用此功能,请将以下内容添加到您的模块级 build.gradle 文件中

    Groovy

    android {
      ...
      signingConfigs {
        config {
          ...
          v2SigningEnabled false
        }
      }
    }
          

    Kotlin

    android {
      ...
      signingConfigs {
        create("config") {
          ...
          v2SigningEnabled = false
        }
      }
    }
          
  • 对于多 DEX 构建,您现在可以使用 ProGuard 规则来确定 Gradle 应该将哪些类编译到应用的 DEX 文件中。由于 Android 系统在启动应用时会首先加载主 DEX 文件,因此您可以通过将某些类编译到主 DEX 文件中来优先处理启动时的某些类。创建专门用于主 DEX 文件的 ProGuard 配置文件后,请使用 buildTypes.multiDexKeepProguard 将配置文件的路径传递给 Gradle。使用此 DSL 与使用 buildTypes.proguardFiles(它为您的应用提供一般的 ProGuard 规则,并且不会为主要 DEX 文件指定类)不同。
  • 增加了对 android:extractNativeLibs 标志的支持,该标志可以在您将应用安装到设备上时减小应用的大小。当您在应用清单的 <application> 元素中将此标志设置为 false 时,Gradle 会将未压缩且已对齐的原生库版本与您的 APK 打包在一起。这可以防止 PackageManager 在安装过程中将您的原生库从 APK 复制到设备的文件系统,并且还有一个额外的好处,那就是使应用的增量更新更小。
  • 您现在可以为产品变体指定 versionNameSuffix applicationIdSuffix。(问题 59614
更改
  • getDefaultProguardFile 现在返回 Gradle 的 Android 插件提供的默认 ProGuard 文件,不再使用 Android SDK 中的文件。
  • 改进了 Jack 编译器的性能和功能
    • testCoverageEnabled 设置为 true 时,Jack 现在支持 Jacoco 测试覆盖率。
    • 改进了对注解处理器的支持。类路径上的注解处理器(例如任何 compile 依赖项)会自动应用于您的构建。您还可以通过使用模块级 build.gradle 文件中的 javaCompileOptions.annotationProcessorOptions {} DSL 在构建中指定注解处理器并传递参数。

      Groovy

      android {
        ...
        defaultConfig {
          ...
          javaCompileOptions {
            annotationProcessorOptions {
              className 'com.example.MyProcessor'
              // Arguments are optional.
              arguments = [ foo : 'bar' ]
            }
          }
        }
      }
          

      Kotlin

      android {
        ...
        defaultConfig {
          ...
          javaCompileOptions {
            annotationProcessorOptions {
              className = "com.example.MyProcessor"
              // Arguments are optional.
              arguments(mapOf(foo to "bar"))
            }
          }
        }
      }
          

      如果要在编译时应用注解处理器,但不将其包含在 APK 中,请使用 annotationProcessor 依赖项范围。

      Groovy

      dependencies {
          compile 'com.google.dagger:dagger:2.0'
          annotationProcessor 'com.google.dagger:dagger-compiler:2.0'
         // or use buildVariantAnnotationProcessor to target a specific build variant
      }
          

      Kotlin

      dependencies {
          implementation("com.google.dagger:dagger:2.0")
          annotationProcessor("com.google.dagger:dagger-compiler:2.0")
         // or use buildVariantAnnotationProcessor to target a specific build variant
      }
          
    • 要查看可以设置的参数列表,请从命令行运行以下命令:

      java -jar /build-tools/jack.jar --help-properties
      

    • 默认情况下,如果 Gradle 守护程序的堆大小至少为 1.5 GB,则 Jack 现在将在与 Gradle 相同的进程中运行。要调整守护程序堆大小,请将以下内容添加到您的 gradle.properties 文件中:

      # This sets the daemon heap size to 1.5GB.
      org.gradle.jvmargs=-Xmx1536M