Gradle 简介

大家好,今天我们开始一个新专题 — Gradle。关于 Gradle 我们开发中用的非常多,它的知识点完全可以写一本书,这个专题我们重点针对 Gradle 在 Android 日常开发中的应用进行讲解。本文我们主要先介绍一下 Gradle 是什么?有哪些特性?优点在哪?为什么我们构建要用 Gradle?

作者简介:
Android 高级开发工程师,多年一线互联网企业开发经验。擅长 Android、Flutter。熟悉 Android Framework层源码,对 Android 性能调优,UI 绘制,RxJava , OKHTTP 等三方主流框架源码有较深研究。

1. 什么是 Gradle?

什么是 Gradle 呢?在 Gradle 官网中是这么介绍的:

Gradle is an open-source build automation tool focused on flexibility and performance. Gradle build scripts are written using a Groovy or Kotlin DSL. —官网

翻译成中文就是,Gradle 是专注于灵活性和性能的开源构建自动化工具。Gradle 构建脚本是使用 Groovy 或 Kotlin DSL 编写的。

我们看到了这里有个 DSL,下面我们看下什么是 DSL:

DSL 的全称是 Domain Specific Language,即领域特定语言,或者我们可以翻译成“特定领域的语言”。

它的特性就是 “ A specialized computer language designed for a specific task.”

翻译为:为解决某一类任务而专门设计的语言。 再通俗点来说,其实就是这个语言不通用,只能用于特定的某个领域,俗称“小语言”。因此 DSL 也是语言。

通过上面的介绍,说白了,Gradle 就是一个自动化的项目构建工具,用来帮助我们自动构建项目。

2. 为什么要使用 Gradle?

那么我们为什么要使用 Gradle 呢?

2.1 自动化构建

我们在写 Java 的时候,如果没有构建工具,我们需要在控制台,通过javac先将 Java 文件编译为 class 文件,然后再用jar命令将 class 文件打包为 jar 包。有了自动化构建工具只需要一个命令或是点一个按钮就可以打出 jar包。试想下如果 Android 我们不用 Gradle 命令或是按运行按钮打包。那么我们得执行多少命令才能最终打出一个 apk 包。所以自动化构建帮我们做了很多事。

2.2 Gradle 的集各家之所长

前面说到 Gradle 是一个自动化构建工具,那么我们下面对比一同类构建工具和 Gradle 相比的优缺点。
1. Apache Ant
Ant 全称是Another Neat Tool,它是由 James Duncan Davidson 开发的,最初是用来构建 Tomcat 的。发布于 2000 年,它的核心代码是由 Java 编写的因此具有平台无关性。构建脚本是 XML(build.xml)。在早期用 Eclipse 开发的 Android 的时候,构建工具就是 Ant。它的构建脚本有三个节点 project、target、task。

但是它有以下缺点:

  1. 无法实时获取运行信息;
  2. 在项目规范上规范性不足,灵活性太高,对 build.xml 没有约定规范;
  3. XML 作为构建脚本,如果项目构建较为复杂,build.xml 就会很长,难以维护。

2. Apache Maven
为了解决开发人员在使用 Ant 时面临的问题,Apache 在 2004 年发布了 Maven。Maven 除了项目构建功能外,还提供了高级项目管理工具。最初在 Jakata Turbine 项目中用来简化构建过程。Maven 和 Ant 针对项目构建的两个不同方面解决问题,Ant 是为 Java 项目提供平台构建任务,而 Maven 本身描述项目的高级方面。

Maven 同样有以下缺点:

  1. XML 还是会很长: 它还是以 XML 作为构建脚本,如果项目复杂,XML 还是会很长,但是较 Ant 比较好维护;
  2. 缺乏灵活性: 规范性太强,缺乏灵活性,会写很多冗余配置;
  3. 链接仓库不方便: 链接国外 Maven 仓库不方便,要切换至国内阿里云的 Maven 仓库。

总而言之,我们来总结一下:

Gradle 它是一个构建工具,采用 Groovy 或是 Kotlin 语言编写,汲取了 Ant 和 Maven 的优点,但是相比较于 Ant 和 Maven,Gradle 更加强大,高度可定制,构建更加快速。

目前我们开发中,Java 项目一般都用 IntelliJ IDEA,它自带的构建工具是 Maven,也可以使用 Ant。Android 项目默认构建工具一般都是使用 Gradle 的,也是 Google 推荐的 Android 构建工具。我觉得后期 Java 也有可能会使用 Gradle 构建工具。因为 Gradle 它集各家之所长,既吸收了 Maven 的规范化和仓库概念,又吸收了 Ant 的 task 思想。

3. Grade 的版本说明

Gradle 从发布到现在已经有好多个版本了,现在最新的版本是 v6.1.1。下面主要介绍一下主版本和新版本的特性。

  • V2.2.1 - 4.10.1 : 基本已经很少使用了;
  • V4.10.1: AndroidStudio 3.3.0 支持的最低 Gradle 版本;
  • V5.0 : Gradle 的一个比较里程碑的版本,这个版本支持了 Kotlin DSL;
  • V6.0.1: 目前使用较多的版本,也是我们这个课程使用的版本;
  • V6.1.1: 目前最新的版本,2020 年 1 月 15 日发布的。主要是改进了依赖关系管理中的功能集。

4. Gradle 的优点

在 Gradle 官网首页,是这么介绍的:

Accelerate developer productivity

翻译过来就是:加快开发人员生产力

From mobile apps to microservices, from small startups to big enterprises, Gradle helps teams build, automate and deliver better software, faster.

翻译过来就是:从移动应用程序到微服务,从小型初创公司到大型企业,Gradle 可以帮助团队更快地构建,自动化和交付更好的软件。

Gradle 它汲取了 Ant 和 Maven 的优点,吸收了 Ant 的 task 思想,和 Maven 的规范化和仓库概念。采用 Groovy 或是 Kotlin 语言编写,但是它的代码量更少,可读性更强

Gradle 具有以下 3 大特性:

  • 高度可定制: 它的高度可定制化体现在,它以最基本的方式可定制和可扩展的方式建模;
  • 快速 : Gradle 通过重新使用以前执行的输出,仅处理已更改的输入以及并行执行任务来快速完成任务。通俗点就是说,第二次构建,只构建我们修改代码相关的类,不会耗费时间来构建整个项目;
  • 强大 : Gradle 是 Android 的官方构建工具,并支持许多流行的语言和技术。

图片描述

5. 学习基础

  1. 学习这门课程之前,首先要会至少一种编程语言;
  2. 有一定的 Android 开发经验,可以使用 AndroidStudio 独立开发 Android 项目。

有上面的两点知识基础,学起这门课来相信大家会比较轻松。