Android Gradle Plugin 2.2.0(2016 年 9 月)
- 依赖项
- 新增
-
- 使用 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 处理版本来加快构建时间。要了解如何使用此实验性功能,请阅读构建缓存指南。
- 通过采用新的默认打包流水线,可在一个任务中处理压缩、签名和zipaligning,从而提高构建性能。您可以通过向
gradle.properties
文件添加android.useOldPackaging=true
来恢复使用旧的打包工具。使用新的打包工具时,zipalignDebug
任务不可用。但是,您可以通过调用createZipAlignTask(String taskName, File inputFile, File outputFile)
方法自行创建一个。 - APK 签名现在除了传统的 JAR 签名外,还使用APK Signature Scheme 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
现在返回 Android Gradle 插件提供的默认 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 }
- 默认情况下,如果 Gradle 守护进程的堆大小至少为 1.5 GB,Jack 现在将在与 Gradle 相同的进程中运行。要调整守护进程堆大小,请将以下内容添加到您的
gradle.properties
文件中# This sets the daemon heap size to 1.5GB. org.gradle.jvmargs=-Xmx1536M
要查看您可以设置的参数列表,请从命令行运行以下命令
java -jar /build-tools/jack.jar --help-properties
- 当将
-
最低版本 | 默认版本 | 备注 | |
---|---|---|---|
Gradle | 2.14.1 | 2.14.1 | 要了解详情,请参阅更新 Gradle。 |
SDK 构建工具 | 23.0.2 | 23.0.2 | 安装或配置 SDK 构建工具。 |