Gradle的出现让构建系统不再依赖IDE。它有约定优于配置的原则,会给设置和属性提供默认值。它基于Groovy领域专有语言。他只是一个框架,一个空壳,真正的打包等工作都是运行给定的插件来实现的,比如安卓的gradle plugin就是安卓提供安卓方面打包部署功能的
基础概念
项目:每个build.gradle 代表一个项目。每一次构建都包括至少一个项目。
任务:每个项目包含一个或多个任务,一个任务包含多个动作。
动作:是一个代执行的代码块,类似java方法。构建生命周期
就是执行任务的过程,执行任务中动作的过程,Gradle会创建一个动态的模型流。所有任务都会被一个一个执行,没有依赖会被优先执行,有依赖的关系的会按照依赖顺序执行。
包括三个阶段:- 初始化:项目对象会被创建,如果这个项目有包括很多模块,并且每个模块都有自己的
build.gradle,那么会创建多个项目对象。就是我们在安卓主项目下设置的
setting.gralde文件,这个文件默认包含了app模块。 - 配置:构建脚本会被执行,并为每个项目对象分配属于他们的任务
- 执行:执行任务
- 初始化:项目对象会被创建,如果这个项目有包括很多模块,并且每个模块都有自己的
结构
项目下会有一个最顶部的build.gradle,定义了依赖的仓库和安卓Gradle插件的依赖。
project的build.gradle
各个模块也会有自己的build.gradle。例如,app模块下就会有android模块的配置和自己本身的依赖定义,又包括了flavor和builds Type定义和具体的版本定义等,具体内容会以后讲解。
app的build.gradle
Gradle Wrapper
优于Gradle更新频繁,如果每次都手动设置正确的版本,会很麻烦。所以提供了Gradle
Wrapper这个东西简化操作,我们只要运行它就会下载正确的版本并配置好使用上。
他会读取gradle-wrapper.properties这个文件,并运行脚本gradlew(unix上)和
gradlew.bat(windows上)下载对相应的gradle版本。
基本任务
使用gradlew命令运行,gradlew命令是对gradle的二次封装,隐藏gradle内部可能的变化。
- assemble:创建一个apk包,例如assembleDebug创建debug包
- check:运行检查,设备或模拟器
- build:assemble+check
- clean:清空项目输出