- 1、本文档共60页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
深入理解Android之Gradle(完整版)
深入理解Android 之Gradle
Gradle 是当前非常“劲爆”得构建工具。本篇文章就是专为讲解Gradle 而来。介绍Gradle
之前,先说点题外话。
一、题外话
说实话,我在大法工作的时候,就见过Gradle 。但是当时我一直不知道这是什么东西。
而且大法工具组的工程师还将其和Android Studio 大法版一起推送,偶一看就更没兴趣了。
为什么那个时候如此不待见Gradle 呢?因为我此前一直是做ROM 开发。在这个层面上,我
们用 make ,mm 或者mmm 就可以了。而且,编译耗时对我们来说也不是啥痛点,因为用
组内吊炸天的神机服务器完整编译大法的 image 也要耗费 1 个小时左右。所以,那个时侯
Gradle 完全不是我们的菜。
现在,搞APP 开发居多,编译/打包等问题立即就成痛点了。比如:
一个APP 有多个版本,Release 版、Debug 版、Test 版。甚至针对不同APP Store
都有不同的版本。在以前ROM 的环境下,虽然可以配置Android.mk ,但是需要依
赖整个Android 源码,而且还不能完全做到满足条件,很多事情需要手动搞。一个
app 如果涉及到多个开发者,手动操作必然会带来混乱。
library 工程我们需要编译成 jar 包,然后发布给其他开发者使用。以前是用
eclipse 的export,做一堆选择。要是能自动编译成jar 包就爽了。
上述问题对绝大部分APP 开发者而言都不陌生,而Gradle 作为一种很方便的的构建工
具,可以非常轻松得解决构建过程中的各种问题。
二、闲言构建
构建,叫build 也好,叫make 也行。反正就是根据输入信息然后干一堆事情,最后得
到几个产出物(Artifact )。
最最简单的构建工具就是make 了。make 就是根据Makefile 文件中写的规则,执行对
应的命令,然后得到目标产物。
日常生活中,和构建最类似的一个场景就是做菜。输入各种食材,然后按固定的工序,
最后得到一盘菜。当然,做同样一道菜,由于需求不同,做出来的东西也不尽相同。比如,
宫保鸡丁这道菜,回民要求不能放大油、口淡的要求少放盐和各种油、辣不怕的男女汉子
们可以要求多放辣子总之,做菜包含固定的工序,但是对于不同条件或需求,需要做不
同的处理。
在 Gradle 爆红之前,常用的构建工具是 ANT ,然后又进化到Maven 。ANT 和 Maven
这两个工具其实也还算方便,现在还有很多地方在使用。但是二者都有一些缺点,所以让更
懒得人觉得不是那么方便。比如,Maven 编译规则是用XML 来编写的。XML 虽然通俗易
懂,但是很难在xml 中描述if{某条件成立,编译某文件}/else{编译其他文件}这样有不同条
件的任务。
怎么解决?怎么解决好?对程序员而言,自然是编程解决,但是有几个小要求:
这种“编程”不要搞得和程序员理解的编程那样复杂。寥寥几笔,轻轻松松把
要做的事情描述出来就最好不过。所以,Gradle 选择了Groovy。Groovy 基于Java
并拓展了Java 。 Java 程序员可以无缝切换到使用Groovy 开发程序。Groovy 说白
了就是把写Java 程序变得像写脚本一样简单。写完就可以执行,Groovy 内部会
将其编译成Java class 然后启动虚拟机来执行。当然,这些底层的渣活不需要你管。
除了可以用很灵活的语言来写构建规则外,Gradle 另外一个特点就是它是一种
DSL,即Domain Specific Language ,领域相关语言。什么是DSL,说白了它是某
个行业中的行话。还是不明白?徐克导演得《智取威虎山》中就有很典型的 DSL
使用描述,比如:
土匪:蘑菇,你哪路?什么价?(什么人?到哪里去?)
杨子荣:哈!想啥来啥,想吃奶来了妈妈,想娘家的人,孩子他舅舅来了。(找同行)
杨子荣:拜见三爷!
土匪:天王盖地虎!(你好大的胆!敢来气你的祖宗?)
杨子荣:宝塔镇河妖!(要是那样,叫我从山上摔死,掉河里淹死。)
土匪:野鸡闷头钻,哪能上天王山!(你不
您可能关注的文档
- 海航实业诚信手册.pdf
- 海绵城市建设指南(2014-11-2).pdf
- 海量数据处理算法.pdf
- 海绵城市用户手册.pdf
- 涂层技术原理及分类.pdf
- 涂层测厚仪使用说明书.pdf
- 涂料工艺浓缩精华笔记(第六、七章).pdf
- 海阳核电二期监理.pdf
- 涂料消费税分析.pdf
- 涂装 SAMES 喷涂系统控制.pdf
- 中国国家标准 GB/T 18233.4-2024信息技术 用户建筑群通用布缆 第4部分:住宅.pdf
- GB/T 18233.4-2024信息技术 用户建筑群通用布缆 第4部分:住宅.pdf
- GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计.pdf
- 《GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计》.pdf
- 中国国家标准 GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计.pdf
- GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置.pdf
- 《GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置》.pdf
- 中国国家标准 GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置.pdf
- GB/T 17889.4-2024梯子 第4部分:铰链梯.pdf
- 《GB/T 17889.4-2024梯子 第4部分:铰链梯》.pdf
文档评论(0)