简介
Android studio上应用程序开发默认使用Gradle为自动化构建工具,Gradle是在Ant、Maven等自动化工具“前辈”们的基础上发展起来了的。
一、Gradle的核心要点
1.Groovy与Gradle
- Gradle脚本是基于Groovy语言的,因而它一定遵循Groovy的语法。
- Groovy和java可以达到二进制级别的兼容,对于JVM来说他们没有区别
- Groovy还可以使用java类中的api,两者可以混合编程
1.1.与Gradle相关的Groovy的核心特性1:闭包(Closure)
def greeting = { "hello, $it!" }
assert greeting('Patrick') == 'hello, Patrick!'
我们定义了闭包greeting,通过向闭包传入参数来使用它。
基础语法规则:
{ [closureParameters -> ] statements }
- {}:将代码块’框’起来,作为一个整体对象来处理
- [closureParameters -> ] :表示这个闭包所需要的参数,这一段是可选的,Groovy会自动判断分析有没有参数
- statements:代表真正的代码片段
部分闭包样式: - { -> item ++ }: 通过箭头来分隔开闭包参数和代码实现,不使用参数实现
- { println it} : 使用隐含的参数
- { it -> println it} : 和上面打的一样,显示了隐藏的参数
- { String x,String y -> println “xx y”} : 使用两个参数
- 闭包中可以包含多条代码语句
1.2.与Gradle相关的Groovy的核心特性2:Command Chains
Croovy可以让开发者不使用()进行函数调用:
- turn(“left”) -> turn left
- turn(“left”).then(“right”) -> turn left then right
- turn() -> turn():复合时使用,如有参和无参调用时
1.3.与Gradle相关的Groovy的核心特性3:运算符重载
Groovy中的不少运算符会被映射为针对对象的常规函数调用例如:
-
- a+b -> a.plus(b)
-
- a-b -> a.minus(b)
-
- a[b]=c -> a.putAt(b,c) 特殊效果
task hellowhellow
hellowhellow {
print "A"
}
hellowhellow {
print "A"
}
调用gradle hellowhellow结果为:AA
1.4.与Gradle相关的Groovy的核心特性4:动态类型
变量不需要指明所属类型,代码行不需要;号隔断
hellowhellow {
def a
a = "A"
print a
}
2.Gradle的生命周期
Gradle的三个生命周期,Initialzation,Configuration,Execution
- Initialzation:主要作用定位有哪些需要build的文件
- Configuration:根据上一阶段的结果主动处理单个或多个build文件,当前并不代表工程已经开始编译了,这个阶段的产出实际上是一个task所组成的DAG图。这一阶段还会调用开发者编写的hook方法
- Execution:它会基于上一步中的DAG结果来生成目标产物。
3.Gradle依赖版本管理
libs.versions.toml是官方推荐的依赖版本管理方式,位于project > gradle目录下
引用: