介绍
Gradle
是什么?在了解Gradle
之前,我们需要了解什么是构建(build
)。
构建是根据各种脚本信息执行一连串的操作,最终得到一个产物(Artifact
)。
而比较简单的构建工具就是make了。它根据makefile文件中写的规则,执行命令。
最终得到目标产物。我们如果使用过Android NDK
或Android
源码编译,那应该对于mk
文件比较熟悉吧。
而Gradle
就是用来实现这个构建操作的。在Android Studio
中通过Gradle
实现了 aar,jar, apk,aab
等文件的编译。
常见构建工具
Gradle
的出现比较晚。在它之前,各种自动构建工具就已经出现了。即使到现在也还有很多地方在使用。例如 ANT
,Maven
等。
那么在已经存在的构建工具下,为什么Gradle
更受欢迎呢?因为Gradle
更灵活。
用Maven
举例,Maven
编译规则是采用XML
来进行编写的。但是XML
很难实现逻辑判断,如果在构建时需要根据不同条件,执行不同的编译结果的话。
就比较困难了。针对这种需求,才塑造了Gradle
Gradle 特性
Groovy 语言
Gradle
采用Groovy
语言进行规则编写。我们在Android Studio
中的build.gradle
文件中见到的代码,就是groovy
语言
Groovy 是基于Java
并扩展了java
来实现的。所以我们可以看到很多java
的影子在其中。
Groovy
是一种动态语言,它是在java
平台上具有像Python
等语言特性的灵活动态语言。同时它也是一种脚本语言。
我们编译的groovy
脚本,最终Gradle
内部会将它编译成java class
然后进行执行的(当然,这一步不用我们在意和转换了)。
所以我们可以通过Groovy
实现各种逻辑判断和数据修改等操作了。大大的扩展了构建功能能够实现的操作边界。
DSL 特性
Gradle
中除了使用Groovy
脚本进行编辑规则外。还有DSL
特性(Domain Specific Language)。
这也是为什么我们说groovy
是基于java
扩展的,但是为什么很多Gradle
中的命令却看不懂的原因。那就是DSL
(领域相关语言)。
概括就是:构造工具的行话。用代码角度理解就是:缩写。
Gradle
提供了很多的缩写。用类似的缩写来达到干净整洁的脚本配置。
例如:sourceSets
代表源文件集合等。
所以,我们如果要学会使用Gradle
。需要分两步路线去了解,第一个掌握Groovy
语言,第二步学习Gradle
的DSL
。
明白了这两点之后,Gradle
的各种脚本和命令你就可以信手拈来。不在恐惧编辑Gradle
了。
学习Gradle
Gradle 官网地址:Gradle Build Tool
官方详细介绍文档:Gradle User Manual
我们上面的介绍,Groovy语言是一个完整的东西。我们可以通过各种地方去学习,而DSL这个特性,我们就需要在Gradle的官网中的文档去查询和学习了。
我们只有弄明白了Groovy
语言的逻辑,以及相关的DSL API
。
才能摆脱知其然不知其所以然。配置build.gradle
中的脚本就不会迷茫。也能自己根据实际需求进行修改build.gradle
的脚本了。
Groovy DSL Reference
就是介绍各种DSL
特性的文档。可以让我们弄明白很多地方为什么要那么写。
如果你觉得groovy
重新学习太复杂,可以通过查询DSL
弄明白DSL
之后。那么很多gradle
脚本就能弄明白了。
本篇只是一个初略介绍。让大家如果想了解Gradle知识的话,该如何进行下手。
Android Studio 最新的Tools工具要从Gradle 7.2开始了。我们可以从Gradle 7.2开始学习它的各种DSL命令。这样你才能知道哪些命令是废弃使用了。
哪些命令是要如何进行替换升级。
更多的与Gradle 相关的内容,可以通过:Gradle (zinyan.com) 了解。
评论区