在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ Gradle 工作流程
Groovy 介紹
腳本類、文件 I/O 和 XML 操作
更多
一些前提知識
Gradle 工作流程
基本組件
題外話
總結(jié)
Gradle 編程模型及 API 實(shí)例詳解
閉包
Gradle 介紹
閑言構(gòu)建
Groovy 中的數(shù)據(jù)類型

Gradle 工作流程

Gradle 工作流程

Gradle 的工作流程其實(shí)蠻簡單,用一個圖 26 來表達(dá):

http://wiki.jikexueyuan.com/project/deep-android-gradle/images/27.jpg" alt="" />

圖 26 告訴我們,Gradle 工作包含三個階段:

  • 首先是初始化階段。對我們前面的 multi-project build 而言,就是執(zhí)行 settings.gradle
  • Initiliazation phase 的下一個階段是 Configration 階段。
  • Configration 階段的目標(biāo)是解析每個 project 中的 build.gradle。比如 multi-project build 例子中,解析每個子目錄中的 build.gradle。在這兩個階段之間,我們可以加一些定制化的 Hook。這當(dāng)然是通過 API 來添加的。
  • Configuration 階段完了后,整個 build 的 project 以及內(nèi)部的 Task 關(guān)系就確定了。恩?前面說過,一個 Project 包含很多 Task,每個 Task 之間有依賴關(guān)系。Configuration 會建立一個有向圖來描述 Task 之間的依賴關(guān)系。所以,我們可以添加一個 HOOK,即當(dāng) Task 關(guān)系圖建立好后,執(zhí)行一些操作。
  • 最后一個階段就是執(zhí)行任務(wù)了。當(dāng)然,任務(wù)執(zhí)行完后,我們還可以加 Hook。

下面展示一下我按圖 26 為 posdevice 項(xiàng)目添加的 Hook,它的執(zhí)行結(jié)果:

http://wiki.jikexueyuan.com/project/deep-android-gradle/images/28.jpg" alt="" />

我在:

  • settings.gradle 加了一個輸出。
  • 在 posdevice 的 build.gradle 加了圖 25 中的 beforeProject 函數(shù)。
  • 在 CPosSystemSdk 加了 taskGraph whenReady 函數(shù)和 buidFinished 函數(shù)。

好了,Hook 的代碼怎么寫,估計你很好奇,而且肯定會埋汰,搞毛這么就還沒告訴我怎么寫 Gradle。馬上了!

最后,關(guān)于 Gradle 的工作流程,你只要記?。?

  • Gradle 有一個初始化流程,這個時候 settings.gradle 會執(zhí)行。
  • 在配置階段,每個 Project 都會被解析,其內(nèi)部的任務(wù)也會被添加到一個有向圖里,用于解決執(zhí)行過程中的依賴關(guān)系。
  • 然后才是執(zhí)行階段。你在 gradle xxx 中指定什么任務(wù),gradle 就會將這個 xxx 任務(wù)鏈上的所有任務(wù)全部按依賴順序執(zhí)行一遍!

下面來告訴你怎么寫代碼!
\ No newline at end of file