# 任務(wù)
- 了解 Settings 類作用于 Gradle 構(gòu)建的哪個階段?
- 了解 Settings 類與 settings.gradle 的關(guān)系
- 了解和使用 inlcude 方法
- hook 初始化階段的監(jiān)聽器
- 總結(jié)
# Settings 類作用于 Gradle 構(gòu)建的哪個階段斥滤?
前面介紹過,Gradle 構(gòu)建涉及到三個階段蹈胡,分別是 初始化階段
,配置階段
,執(zhí)行階段
。在 Gradle 中就是通過執(zhí)行 Settings
類來完成構(gòu)建的 初始化階段
。
# Settings 類與 settings.gradle 的關(guān)系
就像大家所知的build.gradle
文件是對應(yīng)于Project
的,那么settings.gradle
對應(yīng)于 Settings
類啦悬荣。
# includ 方法
在 Setting 類中,最重要的一個方法就是
include
方法了疙剑。
方法名 | 作用 |
---|---|
void include(String... projectPaths); | 添加需要參與構(gòu)建的Project,接受一個可變參數(shù)践叠,每一個值是一個Project路徑 |
這里有一個需要注意的點:可變參數(shù)的路徑
并不是 project 的文件路徑言缤,它指的是當(dāng)前 project
相對于根project
的路徑。
例如:在一個 AS 的示例工程中禁灼,有如下一些 module 管挟,那么每一個 project 的 path 該如何表示呢,下面我列舉一個示例來表示一下:
GradleDemo(根Project) -> path = ""
app(子Project) -> path = ":app"
subapp(app的子project) -> path = ":app:subapp"
common(子Project) -> path = ":common"
play(子Project) -> path = ":play"
從上面的 module 的結(jié)構(gòu)來看弄捕, GradleDemo 為根project 僻孝,它的路徑是 :
,而對于 app
module 來說导帝,它的 path 是 :app
。subapp
是 app project 的子 project 穿铆,它的 path 是:app:subapp
您单。所以基于上面的理解,每一個 project 的路徑都是相對于根project
而言的荞雏,路徑的分隔符是 :
而不是\
虐秦。
下面是 project路徑 的格式:
:路徑1:路徑2
說了那么多,現(xiàn)在來看看如何使用 include 方法咯:
- 添加一個 project
//添加:app這個module參與構(gòu)建
include ":app"
- 添加多個 project
//include 接受可變參數(shù)凤优,使用 , 逗分開不同的路徑
include ':app',':common'
# hook 初始化階段的監(jiān)聽器
在初始化階段中主要做的事有兩件:
- 確定哪些是需要構(gòu)建的 project 悦陋。
- 為所有的參與構(gòu)建的 Project 創(chuàng)建對象。
那么下面列舉是在執(zhí)行 settings.gradle 腳本的監(jiān)聽回調(diào):
gradle.settingsEvaluated {
println "【settings.gradle】 初始化執(zhí)行結(jié)束"
}
gradle.projectsLoaded {
Gradle gradle ->
println "【settings.gradle】 所有在 settings 中 include 的 Project 對象都創(chuàng)建完成了"
}
# 總結(jié)
雖然 Settings 類很簡單筑辨,但是我們不能忽略的它的作用哦俺驶,畢竟它負責(zé)了 Gradle 構(gòu)建的第一個階段。在日常開發(fā)中棍辕,我們主要使用到的就是 include
方法了暮现,所以本文也只演示了該方法的作用與使用。
記錄于 2018-08-07 晚