美文网首页
快速掌握Gradle配置

快速掌握Gradle配置

作者: karlsu | 来源:发表于2016-07-17 15:47 被阅读41次

    什么是 Gradle ?

    Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的领域专用语言(Domain Specific Language).

    为什么要用Gradle?

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

    1.使用领域专用语言(Domain Specific Language)来描述和处理构建逻辑。(以下简称DSL)

    2.基于Groovy,DSL可以混合各种声明元素,用代码操控这些DSL元素达到逻辑自定义。

    3.支持已有的Maven或者Ivy仓库基础建设。

    4.非常灵活,允许使用best practices,并不强制让你遵照它的原则来。

    5.其它插件时可以暴露自己的DSL和API来让Gradle构建文件使用。

    6.允许IDE集成,是很好的API工具。

    Gradle基础

    Gradle跟maven一样,也有一个配置文件,maven里面是叫pom.xml,而在gradle中是叫build.gradle。AS中的android项目通常至少包含两个build.gradle文件,一个是project范围的,另一个是module范围的,由于一个project可以有多个module,所以每个module下都会对应一个build.gradle。如下图:

    首先看下app下build.gradle里面的内容:

    project#build.gradle:

    module#build.gradle:

    defaultConfig

    Note:函数名不要与指定范围内已经存在的getter方法名冲突。例如,在defaultConfig { ...}中调用getVersionName()会自动使用defaultConfig.getVersionName(),而不是你自定义的其它getVersionName()。

    defaultConfig中是一些基本配置,它会同时应用到debug/release版本上,如果属性没有通过DSL设置,那么默认的属性值会被使用。下面是默认的属性值列表:

    如果你在构建脚本中使用自定义的逻辑读取这些属性,那么第二列的属性就很重要。例如,你可能这样写:

    if(android.defaultConfig.testInstrumentationRunner==null){

    // assign a better default...

    }

    如果这个值是null,那么在构建过程中会被第三列的默认值替代,但是DSL元素不会包含这个默认值(第三列的值),所以你查询不到这个值。这是为了防止解析应用的manifest文件,除非真的必要。

    构建类型(Build Types)

    默认情况下,Android插件会自动设置项目同时构建debug和release版本的应用程序。

    这些配置通过一个构建类型(BuildTpye)对象来设置。默认情况下,debug和release这两个构建类型都会被创建。

    Android插件允许自定义这两个实例,也允许创建其它构建类型。这些都在buildTypes的DSL容器中配置:

    以下是可能用到的属性和它们的默认值:

    上面是对build.gradle基本介绍,在看下其他一些与gradle相关的文件:

    gradle.properties:

    从名字上就知道它是一个配置文件

    settings.gradle:

    这个文件是用来配置多模块的,比如你的项目有两个模块module-a,module-b,那么你就需要在这个文件中进行配置,格式如下:

    include ':module-a',':module-b'

    gradle文件夹:

    这里面有两个文件,gradle-wrapper.jar和gradle-wrapper.properties,它们就是gradle wrapper。

    参考文档:

    Gradle User Guide

    Gradle Plugin User Guide

    Android Gradle插件用户指南(译)

    相关文章

      网友评论

          本文标题:快速掌握Gradle配置

          本文链接:https://www.haomeiwen.com/subject/iylujttx.html