【Gradle系列】Gradle的生命週期

引言

上一階段,咱們學習了gradle基礎語言groovy的簡單入門,如:java

1)【Gradle系列】Groovy語法之變量定義android

2)【Gradle系列】Groovy基礎編程知識1編程

3)【Gradle系列】Groovy基礎編程知識2api

接下來,咱們講藉着groovy語言基礎,來開展咱們的gradle的學習之旅~微信

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等是不能的

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 生命週期

大體流程以下:

1)Initialization初始化階段

2)Configuration配置階段

3)Execution執行階段
複製代碼

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這樣

結尾

哈哈,該篇就寫到這裏(一塊兒體系化學習,一塊兒成長)

相關文章
相關標籤/搜索