相信开发过 Android 应用的人都明白 gradle 的重要性,做为 Android 官方默认的构建工具,Android 开发者在平常开发中免不了和 gradle 打交道。而 gradle 的大部分功能都是经过插件扩展的,像咱们最经常使用的插件就是 Android 官方插件 com.android.application
,用来作一些和 Android 相关的配置。java
那若是咱们想本身开发一个 gradle 插件该怎么作呢?这里我打算用两篇文章给你们分享下,这篇文章主要介绍下 gradle 插件的相关概念,下一片文章结合一个例子展现如何一步步写一个 gradle 插件。android
要知道 gradle 插件是作什么的,先要搞清楚 gradle 是什么。git
简单说 gradle 是一种构建工具,用来控制代码的编译、构建、打包等过程,有点像 C/C++ 项目中的 Make 工具。gradle 执行一次 build 总共能够分为三个步骤:github
settings.gradle
脚本文件,肯定当前项目中包含哪些子项目,Android 项目在这个阶段肯定项目中有哪些 module。build.gradle
脚本文件,建立全部须要建立的 Task。看来 gradle 要作的事情最终都转嫁给了 Task 来执行,让咱们来看看 Task 是什么。编程
咱们常见的编程语言的基本运行单元是代码块或者方法,按照调用的前后顺序执行。但 gradle 不一样,它的工做都由一个个 Task 来执行。Task 能够指定它所依赖的 Task,或者它要在另外一个 Task 以前或者以后运行。app
将处理逻辑分在不一样的 Task 中有这么两个好处:编程语言
那如何建立一个 Task 呢?常见的方式有两种:工具
build.gradle
中直接建立。build.gradle
中通常建立功能简单的 Task,逻辑复杂的 Task 一般由插件建立,不然会使得 build.gradle
文件臃肿不堪。可见插件也是 gradle 一个重要组成部分,咱们再来看看插件是作什么的。学习
gradle 核心的逻辑比较简单,丰富的构建功能都是经过插件的方式扩展的。好比 Android 的构建逻辑确定不是 gradle 官方代码自带的,而是 Android 写了对应的 gradle 插件来实现。这个特性保证了 gradle 功能的灵活性,好比要支持 C 语言的编译,只须要写对应的插件就能够了。gradle
做为 Android 开发者,最多见的两个插件分别是:
com.android.application
com.android.library
一般在 build.gradle
文件中这么使用插件:
apply plugin: 'com.android.application'
复制代码
这表示所在的 module 是一个 app module,而使用 com.android.library
插件表示所在 module 是一个 library module,两种插件分别会对该 module 作不一样的配置。至因而如何配置的,咱们这里先不展开,后面讲到如何写一个插件时会涉及到。这里能够先理解为:应用一个插件时,至关于执行了一串代码块。
到这里咱们明白了 gradle 插件是什么?那为何须要开发 gradle 插件呢?感受和应用开发也没多大关系。
做为一个 Android 开发者,可能以为我只要作出酷炫的界面,每一个界面无缝切换、不卡顿就好了,为何要费劲学 gradle 开发呢?
从我本身的经验来讲,学习开发 gradle 插件有这么几个好处:
build.gradle
文件臃肿。如今咱们明白了 gradle 插件是什么,以及为何要建立 gradle 插件,接下来让咱们点击这里查看第二篇文章来看看如何一步步建立一个 gradle 插件。