`

Gradle使用手册

阅读更多

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

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

鉴于Android Studio使用Gradle构建项目,在IDE的使用过程中可能会遇到很多令人头疼的问题。大锤也是第一次接触,为有个基本的认识,特找来Android官方手册,和大家一起学习学习。翻译不当之处,望指出。

为什么要用Gradle?

Gradle是比较先进的构建系统,也是一个很好的构建工具,允许通过插件自定义构建逻辑

以下是为什么Android Studio选择Gradle的主要原因:

  •         使用领域专用语言(Domain Specific Language)来描述和处理构建逻辑。(以下简称DSL)
  •         基于Groovy。DSL可以混合各种声明元素,用代码操控这些DSL元素达到逻辑自定义。
  •         支持已有的Maven或者Ivy仓库基础建设
  •         非常灵活,允许使用best practices,并不强制让你遵照它的原则来。
  •         其它插件时可以暴露自己的DSL和API来让Gradle构建文件使用。
  •         允许IDE集成,是很好的API工具


需要准备:

  1.        Gradle 1.6 or 1.7
  2.        SDK with Build Tools 17.0.0 (released 5/16/2013)

Basic Project

      在Gradle项目的根目录下,有个叫build.gradle的文件,它描述了这个项目的整体构建基础。

build文件 

      最基本的java程序,它的build.gradle文件就一句话:

apply plugin: 'java'

 

最基本的Android项目,它的build.gradle如下:

buildscript {
    repositories {
          mavenCentral()
     }

    dependencies {
          classpath 'com.android.tools.build:gradle:0.5.6'
     }
}

apply plugin: 'android'
android {
       compileSdkVersion 17
}

 

我们一步步来分析一下上面三部分的内容。

  • buildscript{...} 配置了驱动build的代码,它声明将在Maven中央仓库,取一个classpath dependency,也就是Android plugin for Gradle v0.5.6
  • apply plugin     指明了用到的plugin是android,就像前面java程序中,用的plugin是java一样
  • android{...}     中配置了所有android构建的参数,这里也就是Android DSL的入口点。

 

默认的,只有目标编译环境是必要的,也就是compileSdkVersion这个属性。这和以前在project.properties中的target属性类似。

值得注意的是,如果你在Android项目中写 apply plugin:java 而不是apply plugin:android的话,将会build失败。

Gradle使用手册(二):项目结构

Gradle(一)

项目结构

两大组件(source sets): main source code 和 test code. 它们分别在以下两个目录中:

src/main/
src/instrumentTest/

这两个目录里面,又分别有各自的代码源文件和资源文件。

java/
resources/

对于 Android plugin, 又有以下额外的目录:

AndroidManifest.xml
res/
assets/
aidl/
rs/
jni/
配置项目结构

根据Gradle文档说明,可以通过以下两个方法来重新配置项目结构。

sourceSets {
    main {
        java {
            srcDir 'src/java'
        }

        resources {
            srcDir 'src/resources'
        }
    }
}

或者:

sourceSets {
    main.java.srcDirs = ['src/java']
    main.resources.srcDirs = ['src/resources']
}

而Android的项目也类似,如下列所示:

android {
    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }
        instrumentTest.setRoot('tests')
    }
}

 

注:setRoot这个方法将所有src/instrumentTest目录下的文件及文件夹移到了tests/目录下。

Gradle使用手册(三):构建任务

接续: 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。

 

 

 

 

分享到:
评论

相关推荐

    gradle使用手册中文版

    gradle使用手册中文版

    gradle使用手册.pdf

    gradle 是一个新兴的构建工具,称之为后起之秀也不为过。作为一个构建工具,它整合了ant和maven,灵活性和扩展性都远超ant和maven。gradle 是基于groovy 脚本语言的,而groovy是可以直接编译成java class 文件,直接...

    gradle用户手册中文版

    gradle 用户手册中文版

    gradle用户手册2.13

    gradle用户手册2.13,好多项目都从maven迁移到了gradle,咱们也要与时俱进

    Android gradle打包手册

    Android gradle打包手册

    gradle 手册

    为了学习AS,发现使用gradle构建项目。国外网站访问太慢了,果断写个简单的爬虫全量下载下来,要看的拿走

    项目构建工具Gradle官方用户手册(英文)

    项目构建工具Gradle官方用户手册(英文),官方的文档,值得学习

    gradle用户手册

    Gradle的入门教学手册,0基础,一册在手,说走就走 :)

    gradle:gradle中文文档

    本文档为Gradle使用手册V2.5,欢迎指正,也欢迎加入Gradel中文QQ群:463988029,联系我们一起为开源工具做贡献。 本文档前11章来自github但是比较残缺部分章节无线学院补充翻译、12章-31张来自,感谢他们对Gradle...

    groovy 学习gradle学习经典手册

    网络红文 实战gradle,android,java开发人员的必修课

    Gradle 使用指南

    Gradle,这是一个基于 JVM 的富有突破性构建工具。Gradle 正迅速成为许多开源项目和前沿企业构建系统的选择,同时也在挑战遗留的自动化构建...本教程主要讲解了如何使用 Gradle 构建系统和构建系统过程中涉及的插件。

    gradle-7.6.1-all.zip 快速下载

    这是Gradle 7.6的第一个补丁发布。它修复了以下问题: 1.测试套件插件的依赖块中不可能有平台依赖 2.增加内存使用量(使用-p选项) 3.工具链下载期间构建gradle本身...13.在Gradle手册中提到Foojay工具链解析器插件 ......

    Gradle for Android pdf中文版

    Gradle for Android 中文版 一本简单讲解关于Android中关于Gradle相关的书籍,是快速掌握和理解Gradle的有效辅助书籍。

    Gradle高阶实战手册1

    1简介这篇文档是基于0.9版本的Gradle插件,1.0以前的版本由于不兼容,可能会有所不同1.1 新的构建系统的目标新构建系统的目标是:使得代码和资源的重用更

    Gradle_API_3.5 ( CHM格式 )

    Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写。

    gradle userguide(用户手册)

    gradle 最新的用户手册。光目录就有20页之多.还有其他许多有用的说明。

    gradle-4.10.2.zip

    部署操作手册 https://blog.csdn.net/weixin_41624318/article/details/108712319?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~aggregatepage~first_rank_v2~rank_aggregation-1-108712319.pc...

    Gradle-Android-Plugin:[不推荐使用] Gradle Android插件中文版使用手册,如有纰漏,望斧正

    Gradle-Android-Plugin:[不推荐使用] Gradle Android插件中文版使用手册,如有纰漏,望斧正

    使用Gradle构建Java项目

     这个手册将通过一个简单的Java项目向大家介绍如何使用Gradle构建Java项目。  我们将要做什么?  我们将在这篇文档航中创建一个简单的Java项目,然后使用Gradle构建它。  需要准备什么?  预留15分钟空闲...

Global site tag (gtag.js) - Google Analytics