快速掌握Gradle配置

2016-07-17  本文已影响41人  karlsu

什么是 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插件用户指南(译)

上一篇下一篇

猜你喜欢

热点阅读