引言
上一阶段,我们学习了gradle基础语言groovy的简单入门,如:
1)【Gradle系列】Groovy语法之变量定义
2)【Gradle系列】Groovy基础编程知识1
3)【Gradle系列】Groovy基础编程知识2
接下来,我们讲借着groovy语言基础,来开展我们的gradle的学习之旅~
gradle概述
gradle主要用来构建应用程序
比如:安卓的默认构建就是使用了gradle
gradle可以看成是一种编程框架,其包含如下部分:
1)groovy语言
上阶段我们有体系入门了下,其是gradle中的主要语言,比如我们开发安卓主要的语言是java/kotlin等一样
2)build script block
是gradle特有的,这里先不展开,后面会介绍
3)gradle api
这个是gradle自己的API,如:task/setting等
上面可以看出,gradle有自己的语言,有自己的api,所以可以把gradle当成一个编程框架
在拓展方面,gradle比ant/maven等有优势,ant等只能通过xml方式进行配置,但是gradle可以通过自己特有的API让我们开发者进行定制开发,完成具有特色的构建流程等
举个例子:gradle是可以写if-else等程序语句,但是maven等是不能的
gradle优势
(1)灵活性好
ant/maven构建,不能在构建过程中去修改;而gradle是可以的
如:在构建安卓apk的时候,通过gradle可以让构建出的apk名字按照指定的名称;maven等则不能,只能先生成apk,然后再通过重新命名的方式去改
(2)粒度更细,调整方便(细化到了每一个task)
ant/maven方式构建的时候,构建脚本是独立的,并且不知道工具内部做了什么,最后将代码/资源等打包生成了可执行程序;
但是,gradle从源代码的编译,资源的编译,到生成最后的产物(如:apk),都是通过一系列的task,一个接一个的执行生成的, 并且task的源码是开源的,只要读懂这些,是可以将代码编译等流程理清楚的,同时可以在过程中修改task动态改变构建流程
如:微信的tinker框架,就是通过gradle技术来在构建apk过程,来生成补丁文件
(3)拓展性高,支持插件方式
支持插件方式,意思就是可以引用已有的gradle插件,就像代码一样,可以直接引用第三方库
如:apply plugin: 'com.android.application'
(4)兼容性好
gradle兼容ant/maven构建的所有功能,换句话说gradle吸取了其他构建工具的长处
gradle 生命周期
大致流程如下:
1)Initialization初始化阶段
2)Configuration配置阶段
3)Execution执行阶段
Initialization初始化阶段,解析整个工程中所有Project,构建所有Project的对应的project对象
Configuration配置阶段,解析所有projects对象中的task,构建好所有task的拓扑图 如:
Execution执行阶段,执行具体的task及其依赖的task,顺序是先把依赖的执行完,才去执行自己
监听gradle的生命周期
1)Configuration配置阶段 之前
this.beforeEvaluate {
println "beforeEvaluate:配置阶段 之前>>>> "
}
2)Configuration配置阶段 之后
this.afterEvaluate {
println "afterEvaluate:配置阶段 执行完毕,所有的task构成了拓扑图,在执行阶段一个个执行>>>> "
}
3)gradle 执行完毕
this.gradle.buildFinished {
println "buildFinished:gradle 执行完毕>>>>>> "
}
PS:由于生命周期比较多,这里不一一展开,具体可以见Gradle的API这样
结尾
哈哈,该篇就写到这里(一起体系化学习,一起成长)
Tips
更多精彩内容,请关注 ”Android热修技术“ 微信公众号