本文为稀土技术社区首发签约文章,14天内制止转载,14天后未获授权制止转载,侵权必究!

1、为什么要学习Gradle

  1. Gradle作为Android开发默许的构建东西,你的每一次编译都会用到它。
  2. 招聘要求从以前的熟悉加分,到现在的必备技能,可见Gradle的重要性。

做开发这么久了,你是否对Gradle又爱又恨?是否对Gradle的装备一知半解?是否每次编译成果都像开盲盒相同?是否想知道Gradle背面履行的原理?是否也想手写Plugin?等等等等,假如你想,那这个专栏能够给你答案,彻底搞懂Gradle,助你提效,解放双手,收割Offer。

经过这个专栏你能收成什么:

  1. 熟悉Gradle的原理及相关装备。
  2. 提高定位并处理编译失利的能力。
  3. 看懂并能手写Gradle插件。
  4. 经过Gradle提高编译速度。
  5. 助力面试,收割Offer。

2、Gradle是什么

Gradle是一个专心于灵活性和功能的开源自动化构建东西。

这句话,大部分人在看的时分都是一扫而过,其实我自己也是,可是假如别人问我,为什么要用Gradle?Gradle处理了什么问题?我如同也给不出一个满意的答案,由于我就没有深化的思考过,潜意识里可能会这么答复,由于开发Android用的是Android Studio,然后创立项目的时分默许就有这些gradle的装备了,或者说gradle是Android Studio默许的构建东西,点一下run就能够编译运转到手机了。

我答复的有问题吗,如同也没有问题,可是细想一下,我如同只是在陈诉一件咱们已知的事情,那假如是面试,我顶多算及格,由于没有亮点而被放进备胎池里,最终无缘offer。

那么现在,就尝试着把这句话拆开解读一下:

  • 开源自动化构建东西
  • 专心于灵活性和功能

2.1、什么是构建东西

什么是构建东西呢,构建东西就是自动化帮咱们完结一系列的编译打包的流程。

假如没有构建东西,咱们就需求一遍一遍的履行命令去打包,比如打包APK要用javac去编译代码,再用AAPT去编译资源文件,然后编译DEX组合APK最终签名,假如每改一次代码预览都要这么干的话,那肯定是相当费力的,所以自动化构建东西就诞生了。同时,构建东西也协助咱们做依靠办理,比如在Android Studio之前,咱们用Eclipse开发,没有构建东西的情况下,咱们要依靠一个三方库,需求把jar包下载下来,然后再放进项目里,这个进程是比较繁琐的,并且在升级jar版别的时分又要重复操作一遍,假如其他项目要用的话,又要把这个jar包再手动仿制一遍,可是Gradle是支撑依靠传递的,经过不同的依靠方法就能够改变依靠作用域。

2.2、构建简史

在Gradle之前,最经典的当属Ant了,Ant使用的DSL是xml,xml的进化来源于MakeFile构建的繁琐,而xml特色是结构化且好了解,这比写脚本插件简略多了,所以迅速流行起来。

随着软件行业的迅速发展,咱们的产品功能越来越多,业务越来越复杂,开发团队也日益庞大,这时分工程办理和工程的规范化问题就开端日益突出,于是Maven诞生了。Maven很好的处理了依靠问题,引入了规范依靠库对版别进行办理,并且对工程的目录结构、构建生命周期都做了规范化定义,极大的方便了工程办理及开发。

可是当Maven流行一段时间之后,咱们又发现了问题,xml逻辑简略是不错,可是写起来太烦琐,并且扩展性不行,此刻,Gradle登场了。

Gradle在Maven的基础上,首要处理了两个问题:

  1. 用一种新的DSL,让语法变的更简洁,且支撑扩展;
  2. 定义了扩展方便且不失规范的构建生命周期;

实际上Gradle发展至今,早已逾越了上面这两点,并且还在不断的进化中,比如buildSrc的诞生、kts的支撑、KSP的演进等等。

3、Gradle的特色

  1. Gradle是一个基于JVM运转的构建东西,使用java编写;
  2. 脚本言语(DSL)使用Groovy(.gradle)、Kotlin(.gradle.kts)编写,都是高档言语,都是面向对象编程;
  3. Gradle中的核心对象是Task,Task是Gradle中最小的构建单元,Action是最小的履行单元;
  4. Gradle中的Project对应一个工程,是树形结构,能够向下或向上遍历,还用来相关Task;
  5. Gradle提供了很好的扩展能力,能够依据需求自定义插件及装备;
  6. Gradle在各个生命周期阶段提供了丰富的回调,关于切面处理的扩展很有协助;
  • 高度可定制——Gradle 以最基本的方法可定制和可扩展的方法建模。
  • 快速——Gradle 经过重用先前履行的输出、仅处理更改的输入以及并行履行任务来快速完结任务。
  • 功能强大— Gradle 是 Android 的官方构建东西,支撑多种流行言语和技术。

4、怎么学习Gradle

事实上,学习Gradle并不是一件易事,从Gradle原理、开发装备、到编译打包,每一个点背面都需求深化的学习和了解,围绕着这个主线我也大约简略列了一下学习路线,后边也将继续围绕着下面这个学习路线打开。

【Gradle-1】入门Gradle,前置必读

当然这个学习路线现在也是初版,由于Gradle触及的东西仍是比较多的,更新也比较快,后边也会不断的迭代弥补。

5、总结

本文首要介绍了掌握Gradle的重要性、什么是构建东西以及构建简史、Gradle的特色和Gradle的学习路线。

不过单凭一两篇文章也很难把Gradle讲全面讲清楚,我期望能够经过一个专栏,深化浅出,把Gradle这个难啃的常识点讲明白,所以接下来还会继续介绍Gradle中的Task、生命周期、依靠办理、插件开发、编译提速等相关常识,假如你刚好也想深化了解Gradle,欢迎关注,继续更新!

另外,后边关于Gradle的一些示例源码,都会在这个Github仓库里打开:github.com/yechaoa/Gra…

6、参考文档

  • Gradle User Manual
  • What is Gradle?
  • Learning Gradle
  • Mastering Gradle
  • Gradle入门教程