上一阶段,咱们学习了gradle基础语言groovy的简单入门,如:java
1)【Gradle系列】Groovy语法之变量定义android
2)【Gradle系列】Groovy基础编程知识1编程
3)【Gradle系列】Groovy基础编程知识2api
接下来,咱们讲借着groovy语言基础,来开展咱们的gradle的学习之旅~微信
gradle主要用来构建应用程序markdown
好比:安卓的默认构建就是使用了gradleapp
gradle能够当作是一种编程框架,其包含以下部分:框架
1)groovy语言
上阶段咱们有体系入门了下,其是gradle中的主要语言,好比咱们开发安卓主要的语言是java/kotlin等同样
2)build script block
是gradle特有的,这里先不展开,后面会介绍
3)gradle api
这个是gradle本身的API,如:task/setting等
复制代码
上面能够看出,gradle有本身的语言,有本身的api,因此能够把gradle当成一个编程框架maven
在拓展方面,gradle比ant/maven等有优点,ant等只能经过xml方式进行配置,可是gradle能够经过本身特有的API让咱们开发者进行定制开发,完成具备特点的构建流程等工具
举个例子:gradle是能够写if-else等程序语句,可是maven等是不能的
(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吸收了其余构建工具的长处
大体流程以下:
1)Initialization初始化阶段
2)Configuration配置阶段
3)Execution执行阶段
复制代码
Initialization初始化阶段,解析整个工程中全部Project,构建全部Project的对应的project对象
Configuration配置阶段,解析全部projects对象中的task,构建好全部task的拓扑图 如:
Execution执行阶段,执行具体的task及其依赖的task,顺序是先把依赖的执行完,才去执行本身
1)Configuration配置阶段 以前
this.beforeEvaluate {
println "beforeEvaluate:配置阶段 以前>>>> "
}
复制代码
2)Configuration配置阶段 以后
this.afterEvaluate {
println "afterEvaluate:配置阶段 执行完毕,全部的task构成了拓扑图,在执行阶段一个个执行>>>> "
}
复制代码
3)gradle 执行完毕
this.gradle.buildFinished {
println "buildFinished:gradle 执行完毕>>>>>> "
}
复制代码
PS:因为生命周期比较多,这里不一一展开,具体能够见Gradle的API这样
哈哈,该篇就写到这里(一块儿体系化学习,一块儿成长)