gradle
是什麼? 首先明確一點,gradle
只是一個構建工具而已,並非一門語言。
它採用了 Groovy
這個語言,創造了一種DSL
,但它自己不是語言。java
那麼,gradle
是如何構建咱們的Android
應用呢? gradle
是按照必定的 gradle
的規則去執行的,好比咱們Android Studio
裏面的build.gradle
,setting.gradle
,gradle-wrapper.gradle
,前提是要遵循Groovy
語法。api
閉包: 至關於能夠被傳遞的代碼塊。閉包
buildType
主要就是配置發佈版本和測試版本的一些配置以及混淆文件app
productFlavors
用來作多渠道打包等操做會用到工具
compile
,implementation
和api
implementation
: 不會傳遞依賴測試
compile
和 api
: 會傳遞依賴; api
和 是 compile
的替代品gradle
當依賴被傳遞時,二級依賴的改動會致使 0 級項目從新編譯ui
當依賴的改動不會致使0級項目從新編譯lua
./gradlew taskName
task
的結構task taskName{
// 普通代碼塊代碼:
{
在task 建立過程當中就會被執行,發生在 `configuration`階段
}
doFirst{
task 代碼
}
doLast {
task 代碼
}
}
複製代碼
doFirst() 和 doLast() : 在 task 執行過程當中被執行,發生在 execution
階段.若是用戶沒有直接或間接執行 task
,那麼 doFirst() 和 doLast()代碼不會執行spa
doFirst() 和 doLast() 都是 task 代碼,其中doFirst() 是往前面插入代碼,doLast()是往隊列後面插入代碼
task 依賴: task taskA(denpendsOn : b) 的形式來指定依賴。指定依賴後,task 會在本身執行前先執行本身的task。
單Project
: build.gradle
多Project
: 由 setting.gradle
配置多個
查找 setting.gradle
的順序
當前目錄
兄弟目錄 master
父目錄
gradle
執行生命週期初始化階段: 執行 setting.gradle
,肯定主 project
和 子project
定義階段: 執行每一個project
的build.gradle
,肯定出全部的 task
所組成的有向無環圖
執行階段:: 按照上一階段肯定出的有向五環圖來執行指定的 task
在階段之間插入代碼:
一二階段之間
afterEvaluate{
// 插入代碼
}
複製代碼