什么是 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。
参考文档:
网友评论