Gradle 學習(1)
Gradle的出現讓構建系統不再依賴IDE。它有約定優於配置的原則,會給設定和屬性提供預設值。它基於Groovy領域專有語言。他只是一個框架,一個空殼,真正的打包等工作都是執行給定的外掛來實現的,比如安卓的gradle plugin就是安卓提供安卓方面打包部署功能的
-
基礎概念
專案:每個build.gradle 代表一個專案。每一次構建都包括至少一個專案。
任務:每個專案包含一個或多個任務,一個任務包含多個動作。
動作:是一個代執行的程式碼塊,類似java方法。
-
構建生命週期
就是執行任務的過程,執行任務中動作的過程,Gradle會建立一個動態的模型流。所有任務都會被一個一個執行,沒有依賴會被優先執行,有依賴的關係的會按照依賴順序執行。
包括三個階段:
- 初始化:專案物件會被建立,如果這個專案有包括很多模組,並且每個模組都有自己的
build.gradle,那麼會建立多個專案物件。就是我們在安卓主專案下設定的
setting.gralde檔案,這個檔案預設包含了app模組。 - 配置:構建指令碼會被執行,併為每個專案物件分配屬於他們的任務
- 執行:執行任務
- 初始化:專案物件會被建立,如果這個專案有包括很多模組,並且每個模組都有自己的
-
結構
專案下會有一個最頂部的build.gradle,定義了依賴的倉庫和安卓Gradle外掛的依賴。
project的build.gradle
各個模組也會有自己的build.gradle。例如,app模組下就會有android模組的配置和自己本身的依賴定義,又包括了flavor和builds Type定義和具體的版本定義等,具體內容會以後講解。

app的build.gradle
-
Gradle Wrapper
優於Gradle更新頻繁,如果每次都手動設定正確的版本,會很麻煩。所以提供了Gradle
Wrapper這個東西簡化操作,我們只要執行它就會下載正確的版本並配置好使用上。
他會讀取gradle-wrapper.properties這個檔案,並執行指令碼gradlew(unix上)和
gradlew.bat(windows上)下載對相應的gradle版本。
-
基本任務
使用gradlew命令執行,gradlew命令是對gradle的二次封裝,隱藏gradle內部可能的變化。- assemble:建立一個apk包,例如assembleDebug建立debug包
- check:執行檢查,裝置或模擬器
- build:assemble+check
- clean:清空專案輸出