----《Android Gradle 權(quán)威指南》學(xué)習(xí)筆記
總目錄:Gradle 學(xué)習(xí)系列 -- 目錄
上一篇:Gradle 構(gòu)建腳本基礎(chǔ):任務(wù)間交互
下一篇:Gradle 構(gòu)建腳本基礎(chǔ):代碼與腳本
Project 和 Task 都允許用戶(hù)添加額外的自定義屬性。要添加額外的屬性,通過(guò)應(yīng)用所屬對(duì)應(yīng)的 ext 屬性 即可實(shí)現(xiàn)。
添加之后可以通過(guò) ext 屬性對(duì)自定義屬性讀取和設(shè)置,如果要同時(shí)添加多個(gè)自定義屬性,可以通過(guò) ext 代碼塊。舉個(gè)栗子,在 build.gradle 中有以下代碼:
ext.age = 18
ext {
phone = 13144445555
address = "beiJing"
}
task taskExt {
println "年齡是: ${age}"
println "電話(huà)是: ${phone}"
println "地址是: ${address}"
}
在命令行中執(zhí)行命令:gradle -q taskExt
打印結(jié)果:
年齡是: 18
電話(huà)是: 13144445555
地址是: beiJing
相比局部變量,自定義屬性有更為廣泛的作用域,可以跨 Project,跨 Task 訪問(wèn)這些自定義屬性。只要能訪問(wèn)這些屬性所屬的對(duì)象,那么這些屬性都可以被訪問(wèn)到。
自定義屬性不僅僅局限在 Project 和 Task 上,還可以應(yīng)用在 SourceSet 中,這樣等于每種 SourceSet 又多了一個(gè)可供配置的屬性。在 IDEA 工程的 build.gradle 中有以下代碼:
sourceSets.all {
ext.resourcesDir = null
}
sourceSets {
main {
resourcesDir = "main/res"
}
test {
resourcesDir = "test/res"
}
}
task taskCustomProperty {
sourceSets.each {
println("${it.name}的 resourcesDir 是:${it.resourcesDir}")
}
}
在命令行中執(zhí)行命令:gradle -q taskCustomProperty
打印結(jié)果:
main的 resourcesDir 是:main/res
test的 resourcesDir 是:test/res
在項(xiàng)目中一般使用它來(lái)自定義版本號(hào)和版本名稱(chēng),把版本號(hào)和版本名稱(chēng)單獨(dú)放在一個(gè) Gradle 文件中。因?yàn)樗鼈兠看伟l(fā)布時(shí)都會(huì)改變,變動(dòng)頻繁,放在一個(gè)單獨(dú)的 Gradle 文件中,這樣便于管理,而且改動(dòng)的時(shí)候也不會(huì)因?yàn)?Git 沖突影響這個(gè) Build 文件,便于解決沖突。
-
補(bǔ)充:對(duì)于上面在 IDE 中執(zhí)行 Gradle 任務(wù)有兩種方式:
(1) 在 Gradle 面板中刷新后找到對(duì)應(yīng)的任務(wù)名稱(chēng)后,雙擊即可執(zhí)行任務(wù),在 build 面板 或 run 面板中即可看到結(jié)果。如圖所示:
Gradle面板中執(zhí)行任務(wù).png

