在使用android studio开发android程序时,as就是基于gradle进行构建的,我们只需要通过run就可以编译、打包、安装,非常方便,但是究竟gradle是什么呢?   

  

一、java构建工具

  首先,我们得知道什么是构建工具。实际上,构建工具是一个可编程的工具,它可以帮助我们执行有序的任务,实现工程的自动化,而减少甚至避免不必要的手动操作,即构建工具是一个工具,它就是解放生产力,提高效率的。 在前端中,webpack就是一个构建工具,它不仅仅可以打包,还可以完成测试、热更新、部署、检查、优化等一些列的任务,从而实现了开发的工程化,提高了效率。

  在java中,下面几种构建工具也都是常用的:

  • Ant - Ant的核心是由Java来编写的,采用xml作为构建脚本,它基于任务链思想,任务之间定义依赖,形成先后顺序,然后去逐一完成。但是,XML来定义构建脚本,会使得脚本非常臃肿,因为XML太大了,除非是很小的项目,大的项目让我们很难去维护。就像前后端数据传输原来使用xml,而如今使用的时json一样,都是由于xml的缺点太过明显。
  • Maven - Maven是常常用到的,包括现在,很多java工程师也在广泛使用。Maven构建工具的开发团队就是意识到了Ant的缺陷,采用了标准的项目布局和统一的生命周期,采用约定配置的思想,减少构建脚本需要的编写内容,其社区活跃,可以方便找到合适的插件,是一个非常强大的依赖管理工具。但是Maven使用的也是xml,并且使用默认的结构和生命周期太限制,编写插件扩展也麻烦。
  • Gradle - 它结合了前两者的优点,具有ant的强大和灵活,也有Maven的生命周期管理且易于使用。另外,Gradle没有使用xml而是用基于Groovy的DSL,所以Gradle构建脚本比Ant和Maven更简洁清晰并且其代码很少,因为DSL被设计用于解决特定额问题,贯穿软件的生命周期,从编译到静态检查到测试到打包和部署。

  

二、Gradle

  之前介绍到Gradle是基于ant和maven的更为方便使用的构建工具,并且提到了它是基于groovy的,而DSL是什么呢?

  DSL即Domain Specific Language(领域专用语言),它的基本思想就是“求专不求全”,即DSL就是用于构架工具的,而不是为了进行数值计算等,它的目的很单一,仅仅是专门针对某一特定问题的计算机语言。

  Groovy和java的语法很像,但它是一种动态语言,和java一样,运行在java虚拟机中,所以我们可以认为是Groovy扩展了java语言,下面就是java、Groovy和jre的关系:

    实际上,Groovy Code在真正执行的时候,其实已经变成了java字节码,所以JVM根本不知道自己运行的是Groovy代码。

  

三、Gradle工作流程

  下图可以用来阐述Gradle的工作流程:

    

  即Gradle工作包含了三个阶段:

  • 初始化阶段(Initialization phase)。对于通过as创建的项目来说,就是执行了settings.gradle。
  • 初始化阶段的下一阶段就是配置阶段(Configuration phase)。 它的目标是解析每个project中的build.gradle。
  • 最后一个阶段就是执行阶段(Exection phase)。

  注意每个阶段之后我们都可以有hook去执行自定义函数。

参考文章:https://blog.csdn.net/Innost/article/details/48228651

gradle构建工具的更多相关文章

  1. AS Gradle构建工具与Android plugin插件【大全】

    Android plugin version 与 gradle version 的关系 Gradle是一种构建工具,它通过编写一个名为build.gradle的脚本文件对项目进行设置,再根据这个脚本对 ...

  2. Android Gradle 构建工具(Android Gradle Build Tools)是什么?

    转载地址:http://mrfu.me/android/2015/07/17/New_Android_Gradle_Build_Tools/ 译者地址:[翻]一览新的 Android Gradle 构 ...

  3. Android NDK开发 Android Studio使用新的Gradle构建工具配置NDK环境(一)

    本文主要讲述了如何如何在Android Studio使用新的Gradle构建工具配置NDK环境,现在把相关的步骤整理出来分享给Android程序员兄弟们,希望给他们在配置NDK环境时带来帮助. 从An ...

  4. 一览新的 Android Gradle 构建工具:新的 DSL 结构 和 Gradle 2.5

    译者地址:[翻]一览新的 Android Gradle 构建工具:新的 DSL 结构 和 Gradle 2.5 原文:First Look at New Android Gradle Build To ...

  5. gradle 构建工具,与Ant Maven关系

    1   基本概念 gradle是一个基于Apache ant 和apache maven概念的项目自动化建构工具.它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的xml.当前其支持 ...

  6. [Gradle] Gradle 构建工具的未来

    转载地址:http://www.infoq.com/cn/news/2011/04/xxb-maven-6-gradle Maven面临的挑战 软件行业新旧交替的速度之快往往令人咂舌,不用多少时间,你 ...

  7. Gradle 构建工具

    参考文章: 作者:ghui 链接:https://www.zhihu.com/question/30432152/answer/48239946 来源:知乎 著作权归作者所有.商业转载请联系作者获得授 ...

  8. 大神所写的深度好文---Gradle 构建工具

    什么是构建工具? 我们大家都知道 Gradle 是一种构建工具,那么什么是构建工具呢? 网上一大堆的文字解释我觉得很难理解,这里我以咱们 Android 开发来举个例子吧. 我们以前开发都是用 Ecl ...

  9. Gradle构建工具从入门到精通(IDEA)

    1.Gradle安装 官网下载压缩包,然后解压,配置本地环境变量.主要有下面两个: GRADLE_HOME 是解压后的目录, GRADLE_USER_HOME 的作用是让其他程序检测到本地.gradl ...

随机推荐

  1. c++关键字volatile的作用

    1.易变性 1.1概念 编译器对volatile修饰的变量,当要读取这个变量时,任何情况下都会从内存中读取,而不会从寄存器缓存中读取(因为每次都从内存中读取体现出变量的“易变”) 1.2测试代码(VS ...

  2. mysql order by 中文 排序

    mysql order by 中文 排序 1. 在MySQL中,我们经常会对一个字段进行排序查询,但进行中文排序和查找的时候,对汉字的排序和查找结果往往都是错误的. 这种情况在MySQL的很多版本中都 ...

  3. dj django与ajax交互

    Ajax简介 AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”.即使用Javascript语言与服务器进行异步交互,传输的数 ...

  4. Arria10中的OCT功能

    OCT是什么? 串行(RS)和并行(RT) OCT 提供了 I/O 阻抗匹配和匹配性能.OCT 维持信号质量,节省电路板空 间,并降低外部组件成本. Arria 10 器件支持所有 FPGA 和 HP ...

  5. Shell编程-11-子Shell和Shell嵌套

    目录 什么是子Shell 子Shell产生的途径 Shell脚本调用模式 什么是子Shell     子Shell的概念其实是贯穿整个Shell的,如果想要更好的理解和写Shell脚本则必须要了解子S ...

  6. python的打开_记录

    1. 2.7版本,安装了2.7,可以在命令符里面输入cmd,然后输入python,进入python的工作环境. 2. 3.6版本 ,anaconda版本,在F:\qhpython里边找到python. ...

  7. 主题模型之潜在语义分析(Latent Semantic Analysis)

    主题模型(Topic Models)是一套试图在大量文档中发现潜在主题结构的机器学习模型,主题模型通过分析文本中的词来发现文档中的主题.主题之间的联系方式和主题的发展.通过主题模型可以使我们组织和总结 ...

  8. springJDBC和SpringJDBCTemplate解决方案探究

    先来看一个纯JDBC的例子,体会一下springJDBC和SpringJDBCTemplate两者的区别 一个Customer类 package com.mkyong.customer.model; ...

  9. 经过实际验证的C#调用Haskell的方法

    [系统环境] Windows Server 2008 R2,Haskell Platform 2013.2.0.0,ghc 7.6.3,cabal 1.16.0 [操作步骤] 1. 安装Windows ...

  10. WPF自定义控件开发实例 - ColorPicker

    开发环境:Win10 + VS2017 + .Net4.5 这个 ColorPicker 是<<WPF编程宝典:使用C#2012和.NET4.5>>这本书中的例子.这里我记录一 ...