侧边栏壁纸
博主头像
Z同学博主等级

工作磨平激情前,坚持技术的热忱。 欢迎光临Z同学的技术小站。 分享最新的互联网知识。

  • 累计撰写 283 篇文章
  • 累计创建 55 个标签
  • 累计收到 93 条评论

Android Gradle 知识介绍

Z同学
2022-02-15 / 0 评论 / 2 点赞 / 328 阅读 / 1,626 字
温馨提示:
本文最后更新于 2022-02-21,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

介绍

Gradle 是什么?在了解Gradle之前,我们需要了解什么是构建(build)。

构建是根据各种脚本信息执行一连串的操作,最终得到一个产物(Artifact)。

而比较简单的构建工具就是make了。它根据makefile文件中写的规则,执行命令。

最终得到目标产物。我们如果使用过Android NDKAndroid 源码编译,那应该对于mk文件比较熟悉吧。

Gradle就是用来实现这个构建操作的。在Android Studio中通过Gradle实现了 aar,jar, apk,aab等文件的编译。

常见构建工具

Gradle 的出现比较晚。在它之前,各种自动构建工具就已经出现了。即使到现在也还有很多地方在使用。例如 ANTMaven等。

image-20220215171659446

那么在已经存在的构建工具下,为什么Gradle 更受欢迎呢?因为Gradle 更灵活。

Maven举例,Maven编译规则是采用XML来进行编写的。但是XML很难实现逻辑判断,如果在构建时需要根据不同条件,执行不同的编译结果的话。

就比较困难了。针对这种需求,才塑造了Gradle

Gradle 特性

Groovy 语言

Gradle 采用Groovy语言进行规则编写。我们在Android Studio中的build.gradle文件中见到的代码,就是groovy语言

image-20220215172151937

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语言,第二步学习GradleDSL

明白了这两点之后,Gradle的各种脚本和命令你就可以信手拈来。不在恐惧编辑Gradle了。

学习Gradle

Gradle 官网地址:Gradle Build Tool

image-20220215174037223

官方详细介绍文档:Gradle User Manual

我们上面的介绍,Groovy语言是一个完整的东西。我们可以通过各种地方去学习,而DSL这个特性,我们就需要在Gradle的官网中的文档去查询和学习了。

我们只有弄明白了Groovy语言的逻辑,以及相关的DSL API

才能摆脱知其然不知其所以然。配置build.gradle中的脚本就不会迷茫。也能自己根据实际需求进行修改build.gradle 的脚本了。

DSL :Gradle DSL Version 7.4

image-20220215174959981

Groovy DSL Reference 就是介绍各种DSL 特性的文档。可以让我们弄明白很多地方为什么要那么写。

如果你觉得groovy重新学习太复杂,可以通过查询DSL 弄明白DSL之后。那么很多gradle脚本就能弄明白了。

本篇只是一个初略介绍。让大家如果想了解Gradle知识的话,该如何进行下手。

Android Studio 最新的Tools工具要从Gradle 7.2开始了。我们可以从Gradle 7.2开始学习它的各种DSL命令。这样你才能知道哪些命令是废弃使用了。

哪些命令是要如何进行替换升级。

更多的与Gradle 相关的内容,可以通过:Gradle (zinyan.com) 了解。

2

评论区