原文地址: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. Linux命令执行顺序— ||和&&和;

    command1 && command2: &&左边的command1执行成功(返回0表示成功)后,&&右边的command2才能被执行. comman ...

  2. 2016 系统设计第一期 (档案一)MVC 相关控件整理

    说明:前者是MVC,后者是boostrap 1.form 表单 @using (Html.BeginForm("Create", "User", FormMet ...

  3. xfire for web-Service

    1.0 XFire XFire是codeHaus组织提供的一个开源框架,它构建了POJO和SOA之间的桥梁,主要特性就是支持将POJO通过非常简单的方式发布成Web服务,这种处理方式不仅充分发挥了PO ...

  4. c++ 链接

    header.h #ifndef HEADER_H #define HEADER_H unsigned long getFac(unsigned short num); ; #endif // HEA ...

  5. 使用C#选择文件夹、打开文件夹、选择文件

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  6. jquery取消事件冒泡和取消默认行为

    $('button').click(functon(e){ /*code*/ e.stopPropagation();//取消事件冒泡 e.preventDefault();//取消默认行为 })

  7. Why are very few schools involved in deep learning research? Why are they still hooked on to Bayesian methods?

    Why are very few schools involved in deep learning research? Why are they still hooked on to Bayesia ...

  8. QT的QWidget和Delphi的TPanel很像,都是万能的基础控件

    都只提供了最基本的功能,实际可以在上面随心所欲的创造新的控件.而自身也已经拥有基础的显示功能,而TCustomControl就不行. 比如,这样使用QWidget,直接就可以显示: void Main ...

  9. Android:再按一次退出程序

    感觉这种效果比较友好 //两秒内按返回键两次退出程序 private long exitTime = 0; @Override public boolean onKeyDown(int keyCode ...

  10. 再探Tomcat

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAmQAAADyCAIAAABs006cAAAgAElEQVR4nO2d228b1RaH+2/l9RQhQE