如何从零开发一个 gradle 插件(一)

相信开发过 Android 应用的人都明白 gradle 的重要性,做为 Android 官方默认的构建工具,Android 开发者在平常开发中免不了和 gradle 打交道。而 gradle 的大部分功能都是经过插件扩展的,像咱们最经常使用的插件就是 Android 官方插件 com.android.application,用来作一些和 Android 相关的配置。java

那若是咱们想本身开发一个 gradle 插件该怎么作呢?这里我打算用两篇文章给你们分享下,这篇文章主要介绍下 gradle 插件的相关概念,下一片文章结合一个例子展现如何一步步写一个 gradle 插件。android

要知道 gradle 插件是作什么的,先要搞清楚 gradle 是什么。git

gradle

简单说 gradle 是一种构建工具,用来控制代码的编译、构建、打包等过程,有点像 C/C++ 项目中的 Make 工具。gradle 执行一次 build 总共能够分为三个步骤:github

  • 「initialization 初始化」 执行 settings.gradle 脚本文件,肯定当前项目中包含哪些子项目,Android 项目在这个阶段肯定项目中有哪些 module。
  • 「configure 配置」 执行项目中的 build.gradle 脚本文件,建立全部须要建立的 Task。
  • 「execute 执行」 执行指定的 Task。

看来 gradle 要作的事情最终都转嫁给了 Task 来执行,让咱们来看看 Task 是什么。编程

Task

咱们常见的编程语言的基本运行单元是代码块或者方法,按照调用的前后顺序执行。但 gradle 不一样,它的工做都由一个个 Task 来执行。Task 能够指定它所依赖的 Task,或者它要在另外一个 Task 以前或者以后运行。app

将处理逻辑分在不一样的 Task 中有这么两个好处:编程语言

  • 业务解耦,有利于维护和提升代码健壮性。
  • 增量编译,当 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 插件呢?感受和应用开发也没多大关系。

为何要开发 gradle 插件?

做为一个 Android 开发者,可能以为我只要作出酷炫的界面,每一个界面无缝切换、不卡顿就好了,为何要费劲学 gradle 开发呢?

从我本身的经验来讲,学习开发 gradle 插件有这么几个好处:

  • 将一组 gradle 操做封装在一个插件中,有助于代码复用和避免 build.gradle 文件臃肿。
  • 第三方库将本身的 gradle 操做封装在插件中,以依赖包的方式提供给别的项目使用。
  • 插件可使用 java/kotlin 来写,为不熟悉 gradle 代码的开发者下降开发难度。
  • 增进对 Android 构建过程的理解,有助于学习 Android 热布丁、插件化等技术。

如今咱们明白了 gradle 插件是什么,以及为何要建立 gradle 插件,接下来让咱们点击这里查看第二篇文章来看看如何一步步建立一个 gradle 插件。

相关文章
相关标签/搜索