前言
根据前一篇我们学习了gradle的基础知识和项目结构,我们知道了一个内容,就是android 的项目使用的是gradle进行项目管理,项目中最重要的就是build.gradle setting.gradle。如果需要了解gradle的内容,就需要了解gradle的执行流程,也就是gradle的生命周期。
6 gradle生命周期分析
gradle的执行过程分成了三个部分
- 1 初始化构建
- 2 配置构建
- 3 执行构建
- 4 完成构建或者失败
6.1 初始化的工作
gradle 支持单一和多项目构建,在这个初始化的阶段,gradle就根据一些机制来判断当前构建的项目是单项目还是多项目。在android的插件里,初始阶段是根据setting.gradle 的配置来判断的。
include ':app', ':app2', ':libery','testeclipse2as'
上面的话是我的项目中的配,include代表需要编译的project,一共有4个项目需要参与编译。
一句到底,就是初始化阶段,就是去读取项目的setting.gradle。项目开始构建的时候,就会创建一个gradle对象,下面的是这个对象的api和属性。
6.2 配置构建的工作
在上面的初始化完成后,gradle知道了需要构建的各个项目,于是gradle会尝试读取每一个项目,并将每个项目的 build.gradle 变成一个project对象,这个project就对应了这个build.gradle文件,接着确认好项目的依赖关系,下面这个是project的文档。
https://docs.gradle.org/current/javadoc/org/gradle/api/Project.html
gradle.afterProject( {
project ->
println("this projcet name is = "+project.getName())
println("this projcet path is = "+project.getPath())
})
afterProject 什么意思呢?就是当gradle初始化完成后,开始执行project后会执行这个方法,我们看到这个方法接收的是一个闭包。
project这个类里面有一个方法,叫afterEvaluate,这个方法是当这个project被执行的到时候就回调这个方法。
我们在某一个项目中的build.gradle文件中添加这个方法:
6.3 执行构建的工作
每个项目都有一个个的task(任务),每个任务之间都有相应的关系。执行构建的工作就是执行工作的任务,在执行任务的过程中,gradle会把这个任务的依赖的任务逐个执行。
上图显示的是当前项目所有的可执行的任务,如果我们选择build的菜单的话,就会选择执行构建里面的任务。我们可以使用下面的命令来查看
./gradlew tasks --all
包括我们在android studio上面点击的安装按钮。实际也是通过我们的install命令。