Gradle - 简介

Gradle 简介

Gradle - 简介_第1张图片

Gradle 系列

  1. Gradle - 简介
  2. Gradle - Groovy Language
  3. Gradle - DSL
  4. Gradle - Android Plugin DSL
  5. Gradle - 插件开发
  6. 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 的全称是 Domain Specific Language,即领域特定语言,或者直接翻译成”特定领域的语言”,算了,再直接点,其实就是这个语言不通用,只能用于特定的某个领域,俗称“小语言”。因此 DSL 也是语言。

  • 官方介绍

说白了,Gradle 就是一个自动化构建项目的工具,用来帮助我们自动构建项目。就像我们在写 Java 项目的时候,如果没有构建工具,我们需要先执行 javac 命令先将 Java 源码编译成 class 文件,然后再执行 jar 命令再把 class 文件打成 jar 包。有了构建工具我们只需要点一个按钮就可以了。

Java 的构建,经历了从 Ant -> Maven -> Gradle 的过程,每一次的进步,都是为了解决之前的工具带来的问题:

  • Ant:Ant 的功能虽然强大,但过于灵活,规范性不足,对目录结构及 build.xml 没有默认约定,且没有统一的项目依赖管理。
  • Maven:Maven 解决了规范性的问题,也顺带解决了依赖项统一管理的问题,但由于规范性太强,灵活性不足,pom.xml 采用 xml 结构,项目一大,Xml 就显得冗长。
  • Gradle:综合了 Ant 和 Maven 的优点,吸收了 Ant 中 task 的思想,然后把 Maven 的目录规范以及仓库思想也融合了进来,但允许用户自由的修改默认的规范(如:可随意修改源码目录),配置文件则采用 Groovy 语言来书写,Groovy 是一门可编程语言,配置文件本身就可以视为一份源代码,并最终交由 Gradle 来处理执行。

其实 Gradle 跟 Ant、Maven 等构建工具完成工作差不多,但 Gradle 更加强大,它不仅仅是一个构建工具,还是一个开发框架,这点我们将在后面的学习过程中具体体现。

在 Gradle 之前,Android 的项目构建工具是 Ant,用过 Eclipse 的同学应该都用过。 我们知道 Ant 是不支持自动去下载配置依赖 jar 的,这个坑就不提了。还有 Ant 的编译规则是基于 xml 的,用 xml 是很难描述类似这样不同条件的任务的:

if(){
    //如果条件成立,编译某文件
}else{
	//如果条件不成立,编译某文件
}

然后我们都知道出现了 Gradle,首先 Gradle 是支持自动下载的依赖包的,Gradle 脚本不是像传统的 xml 文件那样,而是一种基于 Groovy 的动态 DSL,而 Groovy 语言是一种基于 jvm 的动态语言。 基于这种设计,Gradle 支持我们像写脚本一样的去写项目的构建规则也就是开发插件。

总结

  1. Gradle 是一个构建工具,也是一个开发框架,基于 Groovy 语言。 我们可以通过 Groovy 语言去写自己的Gradle 插件,也可以去编写指定的脚本去改变构建规则。
  2. Android studio中 Gradle 之所以能够构建 Android 工程,是因为有基于 Android 的 Gradle 插件。

下面我们将从下面几个部分来学习:

  1. Gradle - 简介
  2. Gradle - Groovy Language
  3. Gradle - DSL
  4. Gradle - Android Plugin DSL
  5. Gradle - 插件开发
  6. Gradle - 插件发布

其他系列

  • Android 屏幕适配全攻略
  • Windows 环境下载 Android 源码
  • Android 性能优化-UI优化
  • Android 性能优化-内存优化
  • Java 虚拟机内存分配机制
  • Java 虚拟机垃圾回收机制
  • 一篇文章看明白 TCP/IP,TCP,UDP,IP,Socket 之间的关系
  • 一篇文章看明白 HTTP,HTTPS,SSL/TSL 之间的关系
  • 一篇文章看明白 Android 系统启动时都干了什么
  • 一篇文章了解相见恨晚的 Android Binder 进程间通讯机制
  • 一篇文章看明白 Android 从点击应用图标到界面显示的过程
  • 一篇文章看明白 Activity 与 Window 与 View 之间的关系
  • 一篇文章看明白 Android 图形系统 Surface 与 SurfaceFlinger 之间的关系
  • 一篇文章看明白 Android Service 启动过程
  • 一篇文章看明白 Android PackageManagerService 工作流程
  • 一篇文章看明白 Android v1 & v2 签名机制

更多文章:

这是我博客长期更新的项目,欢迎大家 Star。
https://github.com/jeanboydev/Android-ReadTheFuckingSourceCode

我的公众号

欢迎你「扫一扫」下面的二维码,关注我的公众号,可以接受最新的文章推送,有丰厚的抽奖活动和福利等着你哦!?

如果你有什么疑问或者问题,可以 点击这里 提交 issue,也可以发邮件给我 [email protected]

同时欢迎你 Android技术进阶:386463747 来一起交流学习,群里有很多大牛和学习资料,相信一定能帮助到你!

你可能感兴趣的:(Gradle,Gradle,系列)