上一階段,咱們學習了gradle基礎語言groovy的簡單入門,如:java
1)【Gradle系列】Groovy語法之變量定義android
2)【Gradle系列】Groovy基礎編程知識1編程
3)【Gradle系列】Groovy基礎編程知識2api
接下來,咱們講藉着groovy語言基礎,來開展咱們的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等是不能的
(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吸收了其餘構建工具的長處
大體流程以下:
1)Initialization初始化階段
2)Configuration配置階段
3)Execution執行階段
複製代碼
Initialization初始化階段,解析整個工程中全部Project,構建全部Project的對應的project對象
Configuration配置階段,解析全部projects對象中的task,構建好全部task的拓撲圖 如:
Execution執行階段,執行具體的task及其依賴的task,順序是先把依賴的執行完,纔去執行本身
1)Configuration配置階段 以前
this.beforeEvaluate {
println "beforeEvaluate:配置階段 以前>>>> "
}
複製代碼
2)Configuration配置階段 以後
this.afterEvaluate {
println "afterEvaluate:配置階段 執行完畢,全部的task構成了拓撲圖,在執行階段一個個執行>>>> "
}
複製代碼
3)gradle 執行完畢
this.gradle.buildFinished {
println "buildFinished:gradle 執行完畢>>>>>> "
}
複製代碼
PS:因爲生命週期比較多,這裏不一一展開,具體能夠見Gradle的API這樣
哈哈,該篇就寫到這裏(一塊兒體系化學習,一塊兒成長)