原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Using-sourceCompatibility-1.7
翻译:Android Studio 中文组(大锤译)

接续: Gradle(一) | Gradle(二)

通用任务

将一个plugin运用到build file中时,会自动创建一系列的构建任务(build task)去运行。Java plugin和Android Plugin也都会如此。

我们对于任务的约定有以下四个:

  • assemble任务,汇集所有项目输出
  • check任务,运行所有校验
  • build任务,既汇集又校验

clean任务,清除所有项目输出

   assemble, check and build任务自己本身不做任何事情,它们只是plugin锚点,真正任务的是由plugin来添加执行。

这样做的好处是,不管你在什么项目中,你都可以调用同样的命令来执行。

  通过命令行,你可以得到更高级别的任务,命令如下:

gradle tasks

列出当前运行的所有任务,以及查看他们之间的依赖关系:

gradle tasks --all

注: Gradle会自动地检测一个任务中申明的输入和输出。当重复执行两次build任务时,Gradle会报告当前所有任务是UP-TO-DATE的状态。

Java项目的任务

Java plugin会创建两个任务,分别挂到锚任务中,如下

    assemble
jar This task creates the output.
check
test This task runs the tests
  • jar任务是编译执行Java源代码。
  • test任务是运行unit test

通常,java项目中的任务只会用到assemble和check这两个,更多的其他task详见此处。

Android 任务

Android的任务比通用的四大任务多了“connectedCheck”和“deviceCheck”,这是想要让项目忽视设备是否连接,正常执行check任务。

  • assemble任务,  汇集所有项目输出
  • check任务,运行所有校验
  • connectedCheck任务,运行所有需要链接设备或模拟器的校验, 并行运行
  • deviceCheck任务,运行调用远程设备的校验,运用于CI Servers
  • build任务,既汇集又校验
  • clean任务,清除所有项目输出

注:build任务不依赖与deviceCheck或connectedCheck

一个安卓的项目至少有两个输出,一是debug apk,二是release apk.这两个输出都有自己对应的锚任务,来实现它们各自的构建调用assemble任务时会同时调用assembleDebug和assembleRelease来保证有两个输出。

assemble
- assembleDebug
- assemblRelease

Tip: Gradle 支持Camel命名方式的简写,比如在输命令行时,可以用aR代替assembleRelease,如果没有其他别的任务也是aR简写的话:

gradle  aR =  gradle assembleRelease

Check任务也有它们自己的依赖关系:

  • check

---lint (目前还没实现,汗一个)

  • connectedCheck

---connectedInstrumentTest
                ---connectedUiAutomatorTest (这个也还没实现……)

  • deviceCheck

依赖于任务创建时,其他插件实现测试的扩展点

最后, 为了能够安装卸载,Android plugin 为所有的build类型(debug,release,test)都创建了install/uninstall 任务,但需要signing。

本文转自:http://www.android-studio.org/index.php/docs/guide/136-gradle-3

Gradle使用手册(三):构建任务的更多相关文章

  1. Android studio:Groovy 与 Gradle 基础【三】

    转载:http://www.apkbus.com/forum.php?mod=viewthread&tid=255064&extra=page%3D2%26filter%3Dautho ...

  2. 【系列教程1】Gradle入门系列三:依赖管理

    在现实生活中,要创造一个没有任何外部依赖的应用程序并非不可能,但也是极具挑战的.这也是为什么依赖管理对于每个软件项目都是至关重要的一部分. 这篇教程主要讲述如何使用Gradle管理我们项目的依赖,我们 ...

  3. gradle中的增量构建

    目录 简介 增量构建 自定义inputs和outputs 运行时API 隐式依赖 输入校验 自定义缓存方法 输入归一化 其他使用技巧 gradle中的增量构建 简介 在我们使用的各种工具中,为了提升工 ...

  4. Gradle学习系列之八——构建多个Project

    在本系列的上篇文章中,我们讲到了Gradle的依赖管理,在本篇文章中,我们将讲到如何构建多个Project. 请通过以下方式下载本系列文章的Github示例代码: git clone https:// ...

  5. 建站手册-网站构建:万维网联盟(World Wide Web Consortium)

    ylbtech-建站手册-网站构建:万维网联盟(World Wide Web Consortium) 1.返回顶部 1. http://www.w3school.com.cn/site/site_w3 ...

  6. [转]-Gradle使用手册(三):构建任务

    原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Using-sourceCompatibility-1. ...

  7. [转]-Gradle使用手册(一):为什么要用Gradle?

    原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Using-sourceCompatibility-1. ...

  8. Gradle使用手册(一):为什么要用Gradle?

    原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Using-sourceCompatibility-1. ...

  9. 从零开始学习Gradle之三---多项目构建

       随着信息化的快速发展,IT项目变得越来越复杂,通常都是由多个子系统共同协作完成.对于这种多系统.多项目的情况,很多构建工具都已经提供了不错的支持,像maven.ant.Gradle除了借鉴了an ...

随机推荐

  1. ContextMenuStrip控件

    设置单击窗体右键菜单 注意如果想在form1中显示右键菜单,那么要设置form1的属性

  2. 浅析 public static void main(String[] args)

    最初接触Java程序的时候,老师就教导我们要从下面这句开始学起,据说是约定俗成的,所以直到今天,还是只知道java程序应该这么写,具体为什么这么写,鄙人惭愧. public class ClassNa ...

  3. Orcale Function Sequence

    Orcale Function Sequence. 1 Create Or Replace Function F_Get_Sequence(As_Companyno In Varchar2, As_T ...

  4. Code for the Homework1 改进

    #include <iostream> #include <vector> #include "shape.h" //using namespace std ...

  5. 1874: [BeiJing2009 WinterCamp]取石子游戏 - BZOJ

    Description小H和小Z正在玩一个取石子游戏. 取石子游戏的规则是这样的,每个人每次可以从一堆石子中取出若干个石子,每次取石子的个数有限制,谁不能取石子时就会输掉游戏. 小H先进行操作,他想问 ...

  6. 1017: [JSOI2008]魔兽地图DotR - BZOJ

    Description DotR (Defense of the Robots) Allstars是一个风靡全球的魔兽地图,他的规则简单与同样流行的地图DotA (Defense of the Anc ...

  7. HTML可编辑下拉框

    <div style="position:relative;">   <select style="width:120px;" onchang ...

  8. Unity3D 自动打包整个项目(以AssetBundle实现)

    原地址:http://blog.csdn.net/huang7jiao/article/details/18370653 需求: 在移动开发中,手动控制资源的加载.释放和热更新,是很有必要的. 而Un ...

  9. Android 如何切换到 Transform API?

    摘要: 如果你的 Android 构建中涉及到字节码插装(bytecode instrumentation),或者应用中提供了进行插装的插件,并希望它能支持 Instant Run,那么你必须切换到 ...

  10. python参考手册--第2章词汇和语法约定

    1.续行符\ 三引号.().{}.[]中的内容不需要续行符 2.空格缩进 优选空格作为缩进,不要用tab,这是因为不同操作系统下tab对应的空格不一样,而python是通过严格的空格来控制语句块的. ...