项目的自动化构建和Gradle

目录

一、项目自动化

1、什么是项目自动化

2、项目自动化类型

2.1 、按需构建

2.2 、触发构建

2.3 、定时构建

二、自动化构建工具概述

1、为什么需要自动化构建工具

2、什么是自动化工具

3、构建工具中的每个元素和它们的职责

3.1、构建文件

3.2、构建的输入和输出

3.3、构建引擎

 3.4、依赖管理器

三、基于java的构建工具 Ant 和 Mave.

1、Ant

1.1、Ant的应用范围

1.2、Ant的使用方式

1.3、Ant的缺点

2、Maven

2.1、Maven的使用方式

2.2、Mave相对于Ant的优点

3、一个好用的构建工具应该具有的特征

四、Gradle

 1、为什选择gradle


一、项目自动化

1、什么是项目自动化

从安卓开发的角度来抛出一个问题,如果不用gradle如何打包出apk文件?

大家可以产考下面这篇文章:

不用gradle如何编译出android apk?_匆匆往站-CSDN博客

这篇文章将一步一步的流程集合成了一个shell脚本,也算是半自动化了。如果没有这个脚本,里面的每一个步骤,我们是不是都需要手动执行?有一个地方出错,我们就无法进行下去,需要解决后才能执行下一步的流程。还有一些令人头疼的问题,在gradle中依赖一个三方库可以用一行代码来解决如 implementation "xxxxxx",那么不用gradle,我又如何将一个三方库下载到本地,然后依赖上呢?想想都烦琐的令人头疼,还极其容易出错。

用gradle,很容写一个规范的构建脚本,有了这个脚本,在项目开发中无论是谁,都能做到一键编译并打包apk。

所以,自动化构建的好处,可以简单概括成一句话,就是能 快速、简单、正确 的构建成一个可用的应用程序。

2、项目自动化类型

2.1 、按需构建

按照需要,什么时候想构建程序,按下构建的按钮进行一次构建就好了,完全由操作者自己的意识来决定,只是单纯的想构建一下应用程序。

2.2 、触发构建

 通常是在向版本控制系统提交代码时触发,触发内容包括一些自动化测试的工作脚本,并将测试结果进行反馈,来检验程序的健康程度,帮助开发人员快速发现一些问题,并进行改正。

2.3 、定时构建

在固定的时间点,比如每天上午5点,触发一些预定义的构建工作,又叫做定时任务,这种任务通常放在一个专用的服务器上来工作。 可以生成一些自动化测试报告,以及程序文件,对android来说就是apk文件,这样测试每天早上都可以获取到前一天最新代码构建的apk文件来进行测试,而省去了开发人员帮助他们打包,再发送给他们这一环节,无论对测试和开发人员来说,都省了一些时间和精力。

二、自动化构建工具概述

1、为什么需要自动化构建工具

有人会说,用shell脚本也可以实现自动化构建,为什么还需要自动化构建工具?答案是,shell脚本并不能完全做到稳定、可靠、以及不需要手动干预这些点,如将一个shell脚本从unix平台迁移到window平台,也是需要费一些时间和精力的。

2、什么是自动化工具

可编程的,可以执行有序的任务,实现构建自动化的工具

如:打包多个不同渠道的apk文件,然后将所有生成的apk文件拷贝到一个预期的目标文件夹,以供发版使用,就是一个特殊的自动化任务需求。

3、构建工具中的每个元素和它们的职责

3.1、构建文件

构建文件包含了所需要的配置信息和、定义外部依赖(如三方库)、还有以任务形式(gradle中指一个Task)实现某个特殊的指令(如拷贝文件)和任务之间的依赖关系(gradle中一个Task A被TaskB所依赖,TaskB在TaskA执行完之后,才会执行),通常情况下构建文件会使用脚本语言(如groovy)来编写构建逻辑,又叫构建脚本。

3.2、构建的输入和输出

Task可以接受一个输入然后产生一个输出(如:如编译jiava源码的任务输入是java源码,输出是class文件。)。Task也可以不接收输入,不产生输出。

3.3、构建引擎

对构建脚本的内容进行解释,解释成构建引擎能理解的语言,从而按照正确的方式去执行构建脚本中的一系列任务。

 3.4、依赖管理器

android 开发在build文件中声明的依赖,像 implementation “xxxx”,一般指对外部仓库系统中可重用的代码库的依赖,而依赖管理器,就是负责将仓促中的文件下载到本地,并建立正确的依赖路径,供主模块调用。

三、基于java的构建工具 Ant 和 Mave.

1、Ant

1.1、Ant的应用范围

由java编写的构建工具,主要在java项目中,为常用任务提供自动化,如编译源代码、运行单元测试、打包JAR文件和生成Javac文档。

1.2、Ant的使用方式

build文件通过XML文件来表示

1.3、Ant的缺点

* XML作为脚本定义语言,比其它语言更臃肿啰嗦

* 复杂的构建逻辑导致又长又难维护的脚本,当使用XML来定义类似 if/else类似得语句时,实现方式如下文:

ant 中 if else_yieryi_-CSDN博客_ant if,非常长。

* 不提供依赖管理器,需要手动做依赖管理,或者和第三方工具配合使用

* 没有提供构建项目的指导,每个人会根据自己开发的模块,修改build脚本,构建脚本不通用(如每个模块的开发 人员都可能会有一个不同于其他人的源码目录,由于目录不同,所有脚本里会出现大量的类似的代码 ),可读性差。

* 没有提供API获取构建过程中的内存信息,如:获取有多少个Task被执行,是获取不到的。

2、Maven

2.1、Maven的使用方式

仍然是用XML的方式来编写脚本

2.2、Mave相对于Ant的优点

* Mave在配置前会有些默认的约定,如 编译源码从哪个文件夹去寻找文件。如果项目遵守约定的相关默认值,只需要几行XML代码就可以构建一个项目

* 基于构建生命周期的思想,每个项目都按照固定的生命周期去执行构建打包和发布应用程序。

* 增加了直接在XML中对外部库进行依赖的能力。

* Maven的缺点

* Maven推荐一个默认的目录结构和生命周期,限制性太大,并不适合所有项目

* 基于XML,扩展功能过于繁琐。

3、一个好用的构建工具应该具有的特征

* 具有表达性、声明式、可维护的构建语言。简单来说就是能用向写普通代码一样管理整个构建流程。

* 标准化的布局和生命周期,但是具有灵活性和默认值的完全可配置性(灵活性:像android的gradle脚本支持不同Flavor的构建。)

* 拥有灵活易用的方式去实现定制的逻辑。

* 支持构建由多个项目组成的项目结构

* 支持依赖管理

* 能很好的迁移现有的基础构建设施,如基于Ant或者Mave的构建系统。

* 可扩展性好,构建效率高。

四、Gradle

gradle就是我们理想的新一代构建工具

 1、为什选择gradle

 提供了表达性的DSL语言,约定优先于配置,和强大的依赖管理,引入Groovy语言来编写构建逻辑。满足上节中我们对理想构建工具的要求的所有内容。

参考书籍:实践gradle

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值