【Gradle系列】Gradle的生命周期

931 阅读3分钟

引言

上一阶段,我们学习了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 生命周期

大致流程如下:

1Initialization初始化阶段

2Configuration配置阶段

3Execution执行阶段

Initialization初始化阶段,解析整个工程中所有Project,构建所有Project的对应的project对象

Configuration配置阶段,解析所有projects对象中的task,构建好所有task的拓扑图 如:

拓扑图.png

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热修技术“ 微信公众号