----《Android Gradle 权威指南》学习笔记
-
Project 和 Task 都允许用户添加额外的自定义属性。要添加额外的属性,通过应用所属对应的 ext 属性 即可实现。
-
添加之后可以通过 ext 属性对自定义属性读取和设置,如果要同时添加多个自定义属性,可以通过 ext 代码块。举个栗子,在 build.gradle 中有以下代码:
ext.age = 18
ext {
phone = 13144445555
address = "beiJing"
}
task taskExt {
println "年龄是: ${age}"
println "电话是: ${phone}"
println "地址是: ${address}"
}
在命令行中执行命令:gradle -q taskExt
打印结果:
年龄是: 18
电话是: 13144445555
地址是: beiJing
-
相比局部变量,自定义属性有更为广泛的作用域,可以跨 Project,跨 Task 访问这些自定义属性。只要能访问这些属性所属的对象,那么这些属性都可以被访问到。
-
自定义属性不仅仅局限在 Project 和 Task 上,还可以应用在 SourceSet 中,这样等于每种 SourceSet 又多了一个可供配置的属性。在 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}")
}
}
在命令行中执行命令:gradle -q taskCustomProperty
打印结果:
main的 resourcesDir 是:main/res
test的 resourcesDir 是:test/res
在项目中一般使用它来自定义版本号和版本名称,把版本号和版本名称单独放在一个 Gradle 文件中。因为它们每次发布时都会改变,变动频繁,放在一个单独的 Gradle 文件中,这样便于管理,而且改动的时候也不会因为 Git 冲突影响这个 Build 文件,便于解决冲突。
-
补充:对于上面在 IDE 中执行 Gradle 任务有两种方式:
(1) 在 Gradle 面板中刷新后找到对应的任务名称后,双击即可执行任务,在 build 面板 或 run 面板中即可看到结果。如图所示:
Gradle面板中执行任务.png
![](https://img.haomeiwen.com/i5670791/0af41615673e5b60.png)
网友评论