Android官方技术文档翻译——Gradle 插件用户指南(7)
本文译自Android官方技术文档《Gradle Plugin User Guide》,原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide。
翻译不易,转载请注明CSDN博客上的出处:
http://blog.csdn.net/maosidiaoxian/article/details/42417779
前三章见《Android官方技术文档翻译——Gradle 插件用户指南(1-3)》。
第四章见《Android官方技术文档翻译——Gradle 插件用户指南(4)》。
第五章见《Android官方技术文档翻译——Gradle 插件用户指南(5)》。
第六章见《Android官方技术文档翻译——Gradle 插件用户指南(6)》。
翻译工作耗时费神,如果你觉得本文翻译得还OK,请点击文末的“顶”,谢谢。翻译如有错讹,敬请指正。
高级构建定制
构建选项
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:!*~"}}
dex 选项
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。Android官方技术文档翻译——Gradle 插件用户指南(7)的更多相关文章
- Android官方技术文档翻译——Gradle 插件用户指南(5)
昨晚把第五章未译完的几句话攻克了.只是第六章没怎么译,明后天又是周末,假设周一前第六章翻译完的话,周一再发第六章. 本文译自Android官方技术文档<Gradle Plugin User Gu ...
- Android官方技术文档翻译——Gradle 插件用户指南(4)
最近赶项目,白天基本没时间,只有晚上在家的时候才能看一看.昨天晚上只翻译完了第四章,今天就只发第四章吧. 本文译自Android官方技术文档<Gradle Plugin User Guide&g ...
- Android官方技术文档翻译——Gradle 插件用户指南(6)
没想到翻译这篇<Gradle 插件用户指南>拖了差不多一个月,还跨年了.不过还好,在2号时终于一口气把剩下的给翻译完了(其实那天剩下的也就不到一章). 今天先发一下第六章,明天再发第七章. ...
- Android官方技术文档翻译——Gradle 插件用户指南(1-3)
不知道是什么网络问题,上午一直发不了博客,其它页面基本正常,就是在写博客这里,每次打开都是响应超时.刚才用了VPN,顺便试了一下,竟然能够编辑.想是CDN之类的问题吧. 这次翻译的是Gradle 插件 ...
- Android官方技术文档翻译——新构建系统概述
本文译自Android官方技术文档<New Build System>,原文地址:http://tools.android.com/tech-docs/new-build-system. ...
- Android官方技术文档翻译——迁移 Gradle 项目到1.0.0 版本
本文译自Android官方技术文档<Migrating Gradle Projects to version 1.0.0>,原文地址:http://tools.android.com/te ...
- Android官方技术文档翻译——IntelliJ 项目迁移
本文译自Android官方技术文档<Migrating from IntelliJ Projects>,原文地址:http://tools.android.com/tech-docs/ne ...
- Android官方技术文档翻译——Eclilpse项目迁移
本文译自Android官方技术文档<Migrating From Eclipse Projects>,原文地址:http://tools.android.com/tech-docs/new ...
- Android官方技术文档翻译——清单合并
本文译自Android官方技术文档<Manifest Merger>,原文地址:http://tools.android.com/tech-docs/new-build-system/us ...
随机推荐
- ACM Strange fuction
现在,这里有一个功能: F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x (0 <= x <=100) 当x在0到100之间时,你能找到最小值吗? 输入 第一行包 ...
- 安卓高级5 传感器和震动 模仿微信摇一摇Ui效果
效果图: 所用的Ui就三张图: 案例代码: 结构 MainActivity.java package com.example.myapp; import android.content.Intent; ...
- Dynamics CRM 本地插件注册器连CRMAn unsecured or incorrectly secured fault was received from the other party
今天遇到个问题,在本地打开插件注册器连接到远程CRM服务器时报如下问题 但我在CRM服务器上连接注册器是可以打开的,所以不存在账号权限这类的问题了(当然我用的是超管的账号也不可能存在),最后查询得知是 ...
- ViewPager实现首次进入软件时左右滑屏的软件展示效果
效果如图: 图片资源不再提供,大家可以自己下载,能实现效果即可,看代码: 首先是展示界面的layout: view.xml 注意,采用的是帧布局,页面切换时的小圆点是在各张图片之上的 <?xml ...
- 查看4k对齐,激活.net framework 3.5
查看是否4k对齐 Win+R,打开运行窗口,在窗口中输入“msinfo32",组件”--“存储”--“磁盘”.然后可以在右边栏看到“分区起始偏移”,我们图例中有2个数值,分别是:32256字 ...
- Hadoop介绍
是适合大数据的分布式存储与计算平台,用java编写的开源系统,能够安排在大规模的计算机平台上,从而长进计算效率:由 HDFS.MapReduce.HBase.Hive 和 ZooKeeper等成员组成 ...
- JDBC编程-优化程序(六)
首先完成DTO类的编写 DTO类是data tranfer object也就是数据传输类,DTO主要用于数据的传输操作,其中包含属性值,以及构造方法和getter ,setter方法等,不会包含业务逻 ...
- Android View框架总结(四)View布局流程之Measure
View树的measure流程 View的measures时序图 View布局流程之measure measure过程 View的measure过程 ViewGroup的measure过程 Frame ...
- ROS_Kinetic_x 基於ROS和Gazebo的RoboCup中型組仿真系統(多機器人協作)
國防科學技術大學發布了RoboCup中型組仿真平臺,基於ROS和Gazebo設計. 該平臺可以用於多機器人協作研究.參考資料如下: ROS新聞:1 http://www.ros.org/news ...
- SpringMVC系列之(二) springMVC和Struts异同
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring ...