原文地址: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. Oracle修改表空间大小

    在向orale数据库导入数据的时候报 ORA-01658: 无法为表空间 XXX中的段创建 INITIAL 区错误. Oracle我在创建表空间的时候初始化大小为200M,当数据库中数据量达到这个值, ...

  2. PHP视频教程 > PHP面向对象编程视频教程

    当前位置: 主页 > 编程开发 > PHP视频教程 > PHP面向对象编程视频教程 > kingstone金士顿手机内存卡16G仅65元 1.1.什么是面向对象和类 上传日期: ...

  3. liunx命令之whereis、which、find的区别和联系

    liunx命令之whereis.which.find的区别和联系

  4. linux源码分析2

    linux源码分析 这里使用的linux版本是4.8,x86体系. 这篇是 http://home.ustc.edu.cn/~boj/courses/linux_kernel/1_boot.html  ...

  5. 预告:准备开个坑,集中学习一下esp32模块

    对这个模块有兴趣的可以关注我以后的更新,寒假会抽空写几篇心得.

  6. python学习笔记6(字典)

    映射:键值对的关系,键(key)映射值(value) 字典是Python唯一的映射类型 >>> phonebook = {'} >>> phonebook {'} ...

  7. dtGrid插件集成到Angular环境实现表格化数据展现

    00没有抱怨的世界 周末效率好低,两天没更了,看看这看看那,装了个win10发现触摸板驱动不适配,然后找了好久都不行,23333. AngularJS用的时间很短,高级的用法有点吃不消了,$diges ...

  8. vncserver 添加用户

    1.在vncserver设置登录用户的信息   #vi /etc/sysconfig/vncservers   VNCSERVERS="1:root 2:wt" 此处添加用户   ...

  9. ExtJS4.2学习(18)时间控件(转)

    鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-12-22/190.html 感谢“束洋洋 ”的付出. 前言 ...

  10. Matlab中添加搜索目录

    一.问题来源 来自于一份大规模hash图像检索代码. 二.问题解析 2.1 添加目录 addpath('./utils/'); 2.2 添加目录及其子目录 addpath(genpath('./uti ...