为什么是Gradle? -- Gradle教程(一)

原文链接:http://www.woaitqs.cc/gradle/2016/12/20/android-gradle-1.html


开发 Android 的同时,也应该了解其构建构建工具。特别是在实际的生产开发项目中,对于需要分发的包有各式各样的需求,灵活应用构建工具将会极大地提升生产效率,另一方面,在日常开发中,对构建工具的了解,也能帮你省去不少额外工作。Gradle 他是你最亲密的战友之一,好好珍惜他。


Android 构建过程

Android 系统在构建的时候,需要将源码和资源文件打包进入APK中,然后进行签名,部署和分发。下图是对这个过程的简要说明,接下来具体说下执行的步骤。

Android 打包过程
  1. 编译器将源代码编译成 Dex 文件(Android 平台特定的格式)。
  2. 打包器将上一步编译好的 Dex 文件和对应的资源文件打包到同一 APK 文件中。
  3. 在这个 APK 部署到目标设备之前,必须要进行签名。如果是 Debug 版本,那么就会对应着有 Debug 版本的签名,通常情况下,这部分签名可以由 Android Studio 来提供。如果是 Release 版本的话,就需要提供对应的 Release 版本的 Keystore。
  4. 在最后生成 APK 之前,Zipalign 会优化下 APK 的包结构,节省一点的空间。

为什么要用 Gradle

在前面的步骤里面可以看到,Android APK 打包的过程比较复杂,牵涉到的环节也非常地多。我们可以想象在打包过程中有哪些可以进行自定义的部分。例如多渠道、签名、打包类型等等太多了,当这些变量分子太多时,就需要一个足够强大的打包工具了。Gradle 就是其中的佼佼者。

Gradle 拥有如下的优点:

  • 脚本语言,非常灵活,没有之一。
  • 支持多 Project、多 Model 的配置,能够让层次更加鲜明。
  • 非常强大的DSL (Domain Specific Language) ,领域相关语言,在 DSL 帮助下能帮我们省去很多额外工作。(例如 Android、Java 这些都是领域,DSL 在针对这些领域做的工作)。
  • 采用了 Groovy 这个动态语言,相对 Ant、Maven 支持更多高阶属性。

当然 Android 采用 Gradle 的最主要原因是 Google 喜欢,233333.

Gradle Logo

关于 Gradle 所采用的语言 Groovy,将在下一篇文章中做讲解,有兴趣的同学可以看看这篇文章。 Learn Groovy in Y Minutes

可能有同学问为什么不直接讲 Gradle 的命令就好了?我的理由是,不会 Groovy,你无法深入了解 Gradle,对这个强大的构建工具将会始终流于表面。同样,Groovy 这种动态语言的编程范式,也会帮助大家开另一扇窗,看看外面更大更辽阔的世界。


文档信息


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,544评论 25 707
  • 1.介绍 如果你正在查阅build.gradle文件的所有可选项,请点击这里进行查阅:DSL参考 1.1新构建系统...
    Chuckiefan阅读 11,991评论 8 72
  • 转载注明出处:http://www.jianshu.com/p/5255b100930e 0. 前言 完全由个人翻...
    王三的猫阿德阅读 2,406评论 0 4
  • Gradle对于很多开发者来说有一种既熟悉又陌生的感觉,他是离我们那么近,以至于我每天做项目都需要他,但是他又是离...
    阿_希爸阅读 9,511评论 10 199
  • 最近睡着后,不管中午还是晚上,好像身体某个部位,之前好像是腿部,昨晚好像是心,突然被电击一样,意识里,整个人猛烈地...
    夕月摇篮阅读 174评论 3 1