文中就不介绍Gradle是干啥用的了,直接从你须要了解的内容开始.java
在Gradle中,最重要的两个概念是项目和任务以及动做.
每一次构建都包括至少一个项目,每个项目中又包含一个或多个任务.每个build.gradle
文件都表明着一个项目,任务定义在构建脚本里.当初始化构建脚本时,Gradle会基于build文件组装项目和任务对象,一个任务对象包含一系列的动做对象,这些动做对象以后会按顺序执行.一个动做对象就是一段代码块,相似于Java中的方法.android
Gradle的构建一般会有三个阶段:bash
执行一个Gradle的构建最简单的形式是只执行任务中的动做,而这些任务又依赖于其余的任务.为了简化构建过程,构建工具就会新建一个DAG(Directed Acyclic Graph 有向无环图)
,这意味着全部的任务都会一个接一个的被执行,而且一旦一个任务被执行,就不会再次被执行了,那些没有依赖的任务一般会被优先执行.app
每个基于Gradle构建的项目都包含至少一个build.gradle
文件.在Android中,有一些元素是必须的.工具
//实际构建配置的地方
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.1'
}
}
复制代码
repositories
代码块中,jcenter库被配置为整个构建过程的依赖仓库.注:咱们能够在其中添加咱们须要的其余仓库
dependencies
代码块中依赖Android插件,其中提供了构建和测试应用所需的一切.插件用于拓展Gradle构建脚本的能力,在一个项目中应用一个插件,该项目就可使用该插件预约义的一些属性和任务.
好比咱们建立的Android项目中就须要申请插件:apply plugin: 'com.android.application'
,而在库项目中则须要申请apply plugin: 'com.android.library'
.不一样的项目类型可使用不一样的插件,不能在一个项目中同时使用这两个插件,会致使构建错误.
配置以后咱们就可使用android{}
代码块来对咱们的项目作一些配置了.测试
sqms-study
├── app
│ ├── app.iml
│ ├── build
│ ├── build.gradle
│ ├── libs
│ ├── proguard-rules.pro
│ └── src
│ ├── androidTest
│ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ └── res
│ │ ├── drawable
│ │ ├── layout
│ │ └── values
│ │ ├── colors.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ └── test
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── local.properties
├── settings.gradle
└── sqms-study.iml
复制代码
Gradle项目有一个source set(源集)
的概念,官方的解释是一个源集就是一组源文件,它们被一块儿执行和编译
,在Android中,main
就是一个源集,包含了全部源代码和资源文件,test
也是一个源集,用来存放全部测试相关的源代码.gradle
Wrapper其实就是对Gradle的一层包装,便于在团队开发中统一Gradle构建的版本. 当使用Wrapper启动Gradle的时候,Wrapper会检查Gradle有没有被下载关联,若是没有将会从配置的地址进行下载并构建.ui
Gradle提供了内置的Wrapper task 帮助咱们自动生成Wrapper所需的目录文件,在一个项目的根目录输入gradle wrapper
.url
在使用gradle wrapper
指令生成相关文件的时候,能够为其制定一些参数,来控制Wrapper的生成,如不添加任何参数,则使用当前Gradle版本做为生成Wrapper的gradleVersion.spa
如: 使用gradle wrapper --gradle-2.4
表示配置wrapper使用2.4版本的Gradle.它会影响gradle-wrapper.properties中的distributionUrl的值,规则是https\://services.gradle.org/distributions/gradle-${gradleVersion}-bin.zip
我当前使用的Gradle版本为5.5.1,生成的gradle-wrapper.properties文件以下.
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.5.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
复制代码