Gradle的生命周期图如下所示:
图来源于:深入理解Android之Gradle
生命周期分为三个阶段:
注意:
settings.gadle文件和Settings对象是一一对应关系,也就是一个settings.gradle文件只能创建一个Settings对象.settings.gradle文件中通过include:Project方式添加项目,实际上执行的就是Settings对象中的**include**(String… projectPaths)方法.Settings对象会自动为根项目创建Porject对象,名称就是包含settings.gradle文件的目录名.build.gradle文件和Project对象是一一对应关系,Settings对象是根据其所包含项目中的build.gradle文件创建Project对象执行所包含的所有build.gradle文件中的配置代码,下载三方插件,依赖项,以及构建Task的依赖关系图,
注意:
执行build.gradle中的配置代码,不仅仅包含其中的语句,方法,DSL,还包含Task中的配置代码构建Task的依赖关系图是Gradle的核心根据任务命令以及参数,确定要执行的任务子集,并执行
注意:
对于多项目而言,每次执行任务,都需要执行前面的初始化和包含的所有项目的配置我们经常会需要在Project或者是Task执行到某一阶段时做一些额外处理,这时我们就需要进行一些hook, Gradle官方为我们提供了以下方法,以便我们处理
Interface Gradle
Interface TaskExecutionGraph
在多项目的Gradle执行流程中 上述方法的执行顺序如下:
注意:
每次Gradle在执行时 都会创建一个唯一的贯穿始终的 Gradle实例, 在Settings类(settings.gradle) ,Project类(build.gradle)中都可以通过getGradle()方法获取如果要hook Gradle生命周期中的某个点,一定要在该点执行之前就要监听,否者无效