本文为稀土技术社区首发签约文章,14天内制止转载,14天后未获授权制止转载,侵权必究!
1、为什么要学习Gradle
- Gradle作为Android开发默许的构建东西,你的每一次编译都会用到它。
- 招聘要求从以前的熟悉加分,到现在的必备技能,可见Gradle的重要性。
做开发这么久了,你是否对Gradle又爱又恨?是否对Gradle的装备一知半解?是否每次编译成果都像开盲盒相同?是否想知道Gradle背面履行的原理?是否也想手写Plugin?等等等等,假如你想,那这个专栏能够给你答案,彻底搞懂Gradle,助你提效,解放双手,收割Offer。
经过这个专栏你能收成什么:
- 熟悉Gradle的原理及相关装备。
- 提高定位并处理编译失利的能力。
- 看懂并能手写Gradle插件。
- 经过Gradle提高编译速度。
- 助力面试,收割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的基础上,首要处理了两个问题:
- 用一种新的DSL,让语法变的更简洁,且支撑扩展;
- 定义了扩展方便且不失规范的构建生命周期;
实际上Gradle发展至今,早已逾越了上面这两点,并且还在不断的进化中,比如buildSrc的诞生、kts的支撑、KSP的演进等等。
3、Gradle的特色
- Gradle是一个基于JVM运转的构建东西,使用java编写;
- 脚本言语(DSL)使用Groovy(.gradle)、Kotlin(.gradle.kts)编写,都是高档言语,都是面向对象编程;
- Gradle中的核心对象是
Task
,Task是Gradle中最小的构建单元,Action是最小的履行单元; - Gradle中的
Project
对应一个工程,是树形结构,能够向下或向上遍历,还用来相关Task; - Gradle提供了很好的扩展能力,能够依据需求自定义插件及装备;
- Gradle在各个
生命周期
阶段提供了丰富的回调,关于切面处理的扩展很有协助;
- 高度可定制——Gradle 以最基本的方法可定制和可扩展的方法建模。
- 快速——Gradle 经过重用先前履行的输出、仅处理更改的输入以及并行履行任务来快速完结任务。
- 功能强大— Gradle 是 Android 的官方构建东西,支撑多种流行言语和技术。
4、怎么学习Gradle
事实上,学习Gradle并不是一件易事,从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入门教程