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

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

Gradle 工作流程

Gradle 工作流程

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

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

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

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

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

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

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

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