Android官方技术文档翻译——Gradle 插件用户指南(7)
高级构建定制
构建选项
Java 编译选项
android {compileOptions {sourceCompatibility = "1.6"targetCompatibility = "1.6"}}
aapt 选项
android {aaptOptions {noCompress 'foo', 'bar'ignoreAssetsPattern "!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"}}
android {dexOptions {incremental false
preDexLibraries = false
jumboMode = false
}}
操作任务
其中classes 任务是将 Java 源代码进行编译的那个任务。
从build.gradle通过简单地在脚本中使用classes就能很容易地访问它。这是project.tasks.classes的简洁写法。
在 Android 项目中,它会比较复杂一点,因为可能有大量的相同的任务并且他们的名字都是基于Build Types和Product Flavors生成。
android对象中有两个(译者注:我怎么感觉是三个。难道是原文笔误?)属性就是为解决这个问题的:
- applicationVariants(仅适用于应用程序插件)
- libraryVariants(仅适用于库插件)
- testVariants (对两个插件都适用)
这三个会分别返回ApplicationVariant、LibraryVariant和TestVariant的DomainObjectCollection对象。
注意,访问这些集合的任何一个都将触发所有任务的生成。这意味着在访问这些集合之后不应该再进行(重新)配置。
DomainObjectCollection可以对所有对象进行直接访问,或通过过滤器(这将会很方便)过滤。
android.applicationVariants.each { variant ->....}
属性名称 | 属性类型 | 描述 |
name | String | variant的名称。必须保证是唯一的。 |
description | String | 人类可读的对variant的描述。 |
dirName | String | variant的子文件夹名称。必须保证是唯一的。可能会是多个文件夹,即"debug/flavor1" |
baseName | String | variant的输出的基础名称必须保证是唯一的。 |
outputFile | File | variant的输出。这是一个可读可写的属性 |
processManifest | ProcessManifest | 处理manifest的任务。 |
aidlCompile | AidlCompile | 编译AIDL文件的任务。 |
renderscriptCompile | RenderscriptCompile | 编译Renderscript文件的任务。 |
mergeResources | MergeResources | 合并资源的任务。 |
mergeAssets | MergeAssets | 合并assets的任务。 |
processResources | ProcessAndroidResources | 处理和编译资源的任务。 |
generateBuildConfig | GenerateBuildConfig | 生成 BuildConfig 类的任务。 |
javaCompile | JavaCompile | 编译 Java 代码的任务。 |
processJavaResources | Copy | 处理 Java 资源的任务。 |
assemble | DefaultTask | variant 的assemble锚任务。 |
ApplicationVariant 类增加了以下属性:
属性名称 | 属性类型 | 描述 |
buildType | BuildType | variant 的 BuildType。 |
productFlavors | List<ProductFlavor> | variant 的 ProductFlavors。总是不为null,但可以是空集合。 |
mergedFlavor | ProductFlavor | 对android.defaultConfig 和 variant.productFlavors的合并 |
signingConfig | SigningConfig | 用于 variant 的 SigningConfig 对象 |
isSigningReady | boolean | 如果该 variant 有签名所需的所有信息则为true。 |
testVariant | BuildVariant | 将会测试该variant的TestVariant |
dex | Dex | 将代码生成dex的任务。如果variant是一个库,这个值可以为 null。 |
packageApplication | PackageApplication | 打包最终的APK的任务。如果variant是一个库,这个值可以为 null。 |
zipAlign | ZipAlign | 对apk进行zipaligns(优化对齐)的任务。如果variant是一个库或者APK不能被签名,这个值可以为 null。 |
install | DefaultTask | 安装任务。可以为 null。 |
uninstall | DefaultTask | 卸载任务。 |
LibraryVariant 类增加了以下属性:
属性名称 | 属性类型 | 描述 |
buildType | BuildType | variant 的 BuildType。 |
mergedFlavor | ProductFlavor | DefaultConfig 的值 |
testVariant | BuildVariant | 将会测试该variant 的 Build Variant |
packageLibrary | Zip | 打包成Library AAR 归档文件的任务。如果不是库项目可以为null。 |
TestVariant 类增加了以下属性:
属性名称 | 属性类型 | 描述 |
buildType | BuildType | variant 的 BuildType。 |
productFlavors | List<ProductFlavor> | variant 的 ProductFlavors。总是不为null,但可以是空集合。 |
mergedFlavor | ProductFlavor | 对android.defaultConfig 和 variant.productFlavors的合并 |
signingConfig | SigningConfig | 用于 variant 的 SigningConfig 对象 |
isSigningReady | boolean | 如果该 variant 有签名所需的所有信息则为true。 |
testedVariant | BaseVariant | 经过TestVariant测试过的BaseVariant。 |
dex | Dex | 将代码生成dex的任务。如果variant是一个库,这个值可以为 null。 |
packageApplication | PackageApplication | 打包最终的APK的任务。如果variant是一个库,这个值可以为 null。 |
zipAlign | ZipAlign | 对apk进行zipaligns(优化对齐)的任务。如果variant是一个库或者APK不能被签名,这个值可以为 null。 |
install | DefaultTask | 安装任务。可以为 null。 |
uninstall | DefaultTask | 卸载任务。 |
connectedAndroidTest | DefaultTask | 在已连接的设备上运行 android 测试的任务。 |
providerAndroidTest | DefaultTask | 使用扩展 API 运行android 测试的任务。 |
- ProcessManifest
- File manifestOutputFile
- AidlCompile
- File sourceOutputDir
- RenderscriptCompile
- File sourceOutputDir
- File resOutputDir
- MergeResources
- File outputDir
- MergeAssets
- File outputDir
- ProcessAndroidResources
- File manifestFile
- File resDir
- File assetsDir
- File sourceOutputDir
- File textSymbolOutputDir
- File packageOutputFile
- File proguardOutputFile
- GenerateBuildConfig
- File sourceOutputDir
- Dex
- File outputFolder
- PackageApplication
- File resourceFile
- File dexFile
- File javaResourceDir
- File jniDir
- File outputFile
- 要 修改最终输出的文件,可以在 variant 对象上直接使用“outputFile”(译者注:1.0 版本通过variant获取到的是outputs,是一个List,需要通过对其遍历或取第一个元素 variant.outputs[0].outputFile才能获得outputFile对象)。
- ZipAlign
- File inputFile
- File outputFile
- 要 修改最终输出的文件,可以在 variant 对象上直接使用“outputFile”(译者注:1.0 版本通过variant获取到的是outputs,是一个List,需要通过对其遍历或取第一个元素 variant.outputs[0].outputFile才能获得outputFile对象)。
由于Gradle的工作原理以及Android 插件的配置方式,用于每个任务类型的API会有所限制。
这个 API 也可能会被更改。一般情况下,当前 API 是围绕着任务给定的输出或输入(如果可能)的入口来添加额外的处理的(如果需要)。欢迎反馈意见,特别是那些未预知的需求。
关于 Gradle 任务 (DefaultTask,JavaCompile,Copy,Zip),请参阅 Gradle 文档。
BuildType 和 Product Flavor 的属性参考
使用 sourceCompatibility 1.7
android {
compileSdkVersion 19
buildToolsVersion "19.0.0"
defaultConfig {
minSdkVersion 7
targetSdkVersion 19
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
}
minSdkVersion
的值设为19之前的版本,只是你只能使用除了try with resources之外的其他新语言特性。如果你想要使用 try with resources,你就需要把minSdkVersion
也设为 19。
转载于:https://www.cnblogs.com/6060b/p/4202931.html
Android官方技术文档翻译——Gradle 插件用户指南(7)相关推荐
- Android官方技术文档翻译——Gradle 插件用户指南(5)
昨晚把第五章未译完的几句话攻克了.只是第六章没怎么译,明后天又是周末,假设周一前第六章翻译完的话,周一再发第六章. 本文译自Android官方技术文档<Gradle Plugin User Gu ...
- Android官方技术文档翻译——新构建系统概述
本文译自Android官方技术文档<New Build System>,原文地址:http://tools.android.com/tech-docs/new-build-system. ...
- gradle插件用户指南(翻译)
gradle插件用户指南(翻译) http://www.open-open.com/lib/view/open1428320744713.html gradle属性文件详解(英文): https:// ...
- Android官方技术文档翻译——开发工具的构建概述
本文译自Android官方技术文档<Build Overview>,原文地址:http://tools.android.com/build. 因为<Android Lint Chec ...
- Android官方技术文档翻译——Ant 任务
本文译自Android官方技术文档<Ant Tasks>,原文地址:http://tools.android.com/tech-docs/ant-tasks. 因为是抽着时间译的,所以这篇 ...
- Android官方技术文档翻译——ApplicationId 与 PackageName
本文译自androd官方技术文档<ApplicationId versus PackageName>,原文地址:http://tools.android.com/tech-docs/new ...
- android官方技术文档翻译——Android Lint
本文译自androd官方技术文档<Android Lint>,原文地址:http://tools.android.com/tips/lint. 本文地址:http://blog.csdn. ...
- android studio离线配置gradle插件_Gradle 扫盲与 Task 基础
Gradle 是用于构建项目的工具,除了管理依赖库之外,Gradle 还支持我们自己添加编译脚本.添加编译配置等控制项目的构建,通过提供 API 我们可以控制编译的每一步操作. Gradle 目前使用 ...
- Gradle用户指南(1)-Gradle安装
前置条件 Gradle 需要 Java JDK 或者 JRE,版本是 6 及以上.Gradle 将会装载自己的 Groovy 库,因此,Groovy 不需要被安装.任何存在的 Groovy 安装都会被 ...
最新文章
- Sql Server 清除日志的存储过程 Procedure of cleaning sql server's log
- 情感分析之电影评论分析-基于Tensorflow的LSTM
- Java Eclipse和MyEclipse快捷键
- 5_jfoenix_运行jfoenix官方演示,切换片段,部署
- [汇编语言]实验二:字的传送
- Android 基础 —— 活动的启动模式
- maven依赖关系中Scope的作用
- 十一、PHP框架Laravel学习笔记——构造器的查询.分块.聚合
- win 10 linux shell,实用工具:Win10下的bash shell打开教程
- 山西计算机网络系统安装,山西初中信息技术考试系统操作手册-20210410201505.docx-原创力文档...
- ant-design tree 设置默认选中状态_[路由系列]5分钟设置一台Ubiquiti的ERX路由器
- 鸿蒙太空是什么意思,[评论]林黛玉:“眼泪还债”暗洒闲抛知为谁?
- 三方支付之支付宝支付实现逻辑
- 电平转换小结(避免翻车指南)
- 仓库管理系统的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 有一种爱 不能称之为爱情
- powerdesigner 导入sql文件生成模型
- python函数实验总结_Python程序设计实验报告:实验六 函数
- 推荐一款适用于vue的h5富文本编辑器
- DeFi是什么?DeFi对未来意味着什么?
热门文章
- mysql 分表的3种方法
- mysql中engine=innodb和engine=myisam的区别详解
- c++心得之struct和class(结构体和类)
- php帝国程序跨表调用数组,帝国CMS 跨表调用相关信息标签
- java阅读doc文件格式_java – 正确区分.xls和.doc文件的方法?
- Redhat, CentOS 设置系统时区
- python脚本下载sentinel数据_Python API sentinelsat下载错误
- c语言做小学生测验程序,[转载]程序设计方法学课程设计--小学生算术四则运算测试程序(C)...
- java springcloud版b2b2c社交电商spring cloud分布式微服务 (四) 断路器(Hystrix)
- 8K投影仪+大银幕,日本系统Sphere5.2不用头显也能体验VR