Gradle系列知识(六)——Gradle 生命周期

一、Gradle 生命周期

1、initialization:初始化阶段

执行工程的setting.gradle文件。 解析整个工程下的所有Project,构建所有的Project对应的project对象

2、Configuration:配置阶段

解析所有project对象中的task,构建好所有的task拓扑图(有向无环图)。
这个有向无环图其实就是各个执行一个Task所依赖的其他Task而形成的一种关系图。

3、Excution:执行阶段
执行具体的task,及其依赖的task(先执行目标Task依赖的Task,再执行目标Task)

二、生命周期监听方法

生命周期监听的设置有两种方法:
1.实现一个特定的监听接口;
2.提供一个用于在收到通知时执行的闭包。

Project 提供的一些生命周期回调方法:

  • afterEvaluate(closure);
  • afterEvaluate(action);
  • beforeEvaluate(closure);
  • beforeEvaluate(action);

Gradle 提供的一些生命周期回调方法:

  • afterProject(closure),afterProject(action)
  • beforeProject(closure),beforeProject(action)
  • buildFinished(closure),buildFinished(action)
  • projectsEvaluated(closure),projectsEvaluated(action)
  • projectsLoaded(closure),projectsLoaded(action)
  • settingsEvaluated(closure),settingsEvaluated(action)
  • addBuildListener(buildListener)
  • addListener(listener)
  • addProjectEvaluationListener(listener)

在setting.gradle文件中可以监听初始化阶段和配置之前的阶段

this.gradle.settingsEvaluated {
    println('初始化阶段开始执行...')
}
this.gradle.beforeProject {
    println('配置之前调用...')
}

在build.gradle文件中,可以监听配置之后、task的执行阶段和执行完成的阶段

this.afterEvaluate {
    println('配置之后....')
}
gradle.taskGraph.beforeTask {
    println "执行阶段 Task完成之前"
}
gradle.taskGraph.afterTask {
    println "执行阶段 Task完成之后 "
}
this.gradle.buildFinished {
    println("执行阶段完毕,构建完毕...")
}

以上代码不需要添加在任何代码块中,只需要添加到gradle文件的最外层即可。
我们再Terminal中输入gradlew aDebug编译一次,看看输出结果

D:\workspace\Gradle>gradlew aDebug
初始化阶段开始执行...

> Configure project :
配置之前调用...
配置之后....

> Configure project :app
配置之前调用...
配置阶段完成后

> Task :app:preBuild UP-TO-DATE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:preDebugBuild UP-TO-DATE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:compileDebugAidl NO-SOURCE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:compileDebugRenderscript NO-SOURCE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:generateDebugBuildConfig UP-TO-DATE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:javaPreCompileDebug UP-TO-DATE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:checkDebugAarMetadata UP-TO-DATE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:generateDebugResValues UP-TO-DATE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:generateDebugResources UP-TO-DATE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:mergeDebugResources UP-TO-DATE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:createDebugCompatibleScreenManifests UP-TO-DATE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:extractDeepLinksDebug UP-TO-DATE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:processDebugMainManifest UP-TO-DATE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:processDebugManifest UP-TO-DATE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:processDebugManifestForPackage UP-TO-DATE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:processDebugResources UP-TO-DATE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:compileDebugJavaWithJavac UP-TO-DATE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:compileDebugSources UP-TO-DATE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:mergeDebugNativeDebugMetadata NO-SOURCE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:mergeDebugShaders UP-TO-DATE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:compileDebugShaders NO-SOURCE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:generateDebugAssets UP-TO-DATE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:mergeDebugAssets UP-TO-DATE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:compressDebugAssets UP-TO-DATE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:processDebugJavaRes NO-SOURCE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:mergeDebugJavaResource UP-TO-DATE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:checkDebugDuplicateClasses UP-TO-DATE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:dexBuilderDebug UP-TO-DATE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:desugarDebugFileDependencies UP-TO-DATE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:mergeExtDexDebug UP-TO-DATE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:mergeDexDebug UP-TO-DATE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:mergeDebugJniLibFolders UP-TO-DATE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:mergeDebugNativeLibs UP-TO-DATE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:stripDebugDebugSymbols NO-SOURCE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:validateSigningDebug UP-TO-DATE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:packageDebug UP-TO-DATE
执行阶段 Task完成之前
执行阶段 Task完成之后

> Task :app:assembleDebug UP-TO-DATE
执行阶段 Task完成之前
执行阶段 Task完成之后
执行阶段完毕,构建完毕...
执行阶段执行完成后

BUILD SUCCESSFUL in 1s
25 actionable tasks: 25 up-to-date
D:\workspace\Gradle>


在生命周期的打印都输出了

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值