这个对于安卓开发来说,Gradle可以不了解,但是又必须了解。
说不需要了解,是因为: 通过AndroidStudio建立工程的时候,默认就创建好了Gradle的项目结构及对应的任务,通过IDE来添加模块的时候,也可以自动的添加Gradle的配置。
说需要了解,是因为:有时候会遇到构建错误,还有时候需要改一改构建流程的默认行为,另外有些时候,需要自行扩展一个构建任务。
Gradle学习的一个难点在于,其学习资料非常零散,少有成体系的学习资料。当然,官方文档是很成体系的,官方文档也有不好的地方:
- 纯英文;
- 版本更新之后,文档结构有变化。
- 官方文档对于安卓项目的说明没有(因为android的插件是google自行扩展的)
还有一个问题就是,前期gradle的脚本都是使用groovy来编写,我们要写脚本,需要去学习一门新的语言,虽然这个语言和java比较接近,但是由于没什么其他用途,加上需要编写gradle脚本的场景也不是那么常见,就会让觉得有点不值得投入,这两个因素结合起来,会劝退很多安卓开发人员。现在,gradle可以使用kotlin来编写其dsl脚本,学习成本会降低很多。
见到其wrapper的设计令我印象深刻,对比ant及maven需要手动去下载一份二进制副本,然后配置到环境变量中,而你获取到别人的gradle项目之后,直接使用wrapper脚本,就可以执行gradle任务,wrapper脚本会自动帮助你去获取一份gradle的二进制副本,就好像你直接执行gradle的二进制命令一样。
另外gradle也提供了方便的扩展机制,能对构建流程进行定制。
接下来,我将从安卓开发的视角,对Gradle的使用做一个整体的介绍。内容上会包括Gradle的一些基础概念,一些常见的Gradle任务介绍,Android的常见Gradle配置介绍,同时也会介绍自定义Gradle任务及Gradle插件。