Android的Gradle知識1-Android項目中Gradle相關(guān)文件和作用
Android的Gradle知識3-自定義Gradle插件
Android的Gradle知識4-Groovy語法簡介
Gradle基本組件
Gradle中每一個待編譯的工程叫做一個Project凳厢,每一個Project在構(gòu)建的時候都包含一系列的Task藤为。一個Project包含的Task由編譯腳本指定的插件決定。插件是什么呢朴读?插件就是定義Task谢翎,實現(xiàn)Task具體功能的東西捍靠。下面以《GradleDemo項目》為例具體講講Project、Task森逮、插件榨婆。
-
Project
首先我們看一下《GradleDemo項目》的目錄結(jié)構(gòu)如下圖:
GradleDemo項目結(jié)構(gòu)
我們可以通過./gradlew projects
命令查看項目中的Project,執(zhí)行后可以看到結(jié)果如下圖:有Project ':app'
我們在GradleDemo項目中添加一個新的Module《mylibrary》結(jié)構(gòu)如下圖:
執(zhí)行./gradlew projects
命令查看項目中的Project:多了一個 mylibrary Project
結(jié)論:每一個Library和每一個App都是單獨的Project褒侧。
每一個Project的根目錄需要有一個build.gradle良风。build.gradle文件是該Project的編譯腳本。
一個在Gradle項目中可以添加多個子Project闷供,這些子Project是通過 Multi-Projects Build來管理的烟央。
本例的Multi-Projects是 GradleDemo:
那么Root project 'GradleDemo'是如何管理子Project的呢?
通過頂層build.gradle和setting.gradle來管理的这吻。
頂層build.gradle:配置一些公共屬性吊档,公共屬性會應(yīng)用到子Project中;
settings.gradle:告訴Gradle這個Multi-Projects包含那些projects:
- Task 可以通過
./gradlew tasks
所有項目的task唾糯, 查看指定項目的task:./gradlew project-path:tasks
例如: app項目的task./gradlew app:tasks
app項目的部分task
我們可以看到app項目下有很多task怠硼,那么這些task哪來的呢?
這些task是在插件中聲明的移怯;
- 插件
app項目中的插件是哪來的呢香璃?我們一起來看看app項目中的build.gradle
app/build.gradle內(nèi)容
在圖片中可以看到選中的代碼apply plugin:'com.android.application'
,Gradle是通過apply plugin
引入插件的舟误,上述代碼的意思是引入com.android.application
插件葡秒,com.android.application
是Android官方提供的插件。而app項目中的task就是com.android.application
插件聲明創(chuàng)建的。
簡單的總結(jié)一下:上面以具體的《GradleDemo項目》為例介紹了Gradle工作用的的三個重要組件Project眯牧、Task蹋岩、插件。
Project:待編譯的項目就是Project学少;
插件:插件提供各種Task的組件剪个,實現(xiàn)不同的功能需要引入不同的插件。例如:app項目引入的是apply plugin:'com.android.application'
插件版确,mylibrary項目引入的是apply plugin: 'com.android.library'
插件扣囊。
Task:插件提供的具體功能绒疗。項目中的所有Tasks在下圖的①中可以看到侵歇。可以直接點擊就會執(zhí)行對應(yīng)的task或者在命令行輸入./gradlew xxx
執(zhí)行對應(yīng)的task吓蘑。
例如:我們編譯debug的apk可以通過./gradlew assembleDebug
執(zhí)行惕虑。
項目中的所有Tasks
Gradle工作流
所謂Gradle工作流,就是執(zhí)行task命令后Gradle是怎么工作的士修?
Gradle構(gòu)建主要有三個階段:
- Initialization(初始化階段)
Gradle支持單項目和多項目構(gòu)建枷遂。在初始化階段,Gradle確定將要參與構(gòu)建的項目棋嘲,并為每個項目創(chuàng)建一個Project實例酒唉。
就是執(zhí)行setting.gradle。 - Configuration(配置階段)
在這個階段配置每個Project的實例對象沸移。然后就執(zhí)行這些項目腳本中的一部分task痪伦。Configuration階段會建立一個有向圖來描述Task之間的依賴關(guān)系。 -
Execution(執(zhí)行階段)
根據(jù)依賴關(guān)系確定需要執(zhí)行的task雹锣,執(zhí)行task集合网沾。
例子:在《GradleDemo》項目中分別創(chuàng)建如下配置:
settings.gradle
頂層build.gradle
app build.gradle
mylibrary build.gradle
Android項目中Gradle的基本工作流程如上圖所示。
Gradle的語法大家自行百度蕊爵。
Android的Gradle知識1-Android項目中Gradle相關(guān)文件和作用
Android的Gradle知識3-自定義Gradle插件
Android的Gradle知識4-Groovy語法簡介
參考:
- 《Gradle for Android》
- 《深入理解Android之Gradle》