一、Gradle理论
Gradle,这是一个基于 JVM 的富有突破性构建工具。Gradle 正迅速成为许多开源项目和前沿企业构建系统的选择,同时也在挑战遗留的自动化构建项目。Gradle使用语言是Groovy。
适用于自动化地进行软件构建、测试、发布、部署、软件打包的项目。
对于Gradle在Android Studio里面的作用可以简单理解为:是一种项目构建工具。用过Eclipse的都知道Ant。Android Studio 替代了Eclipse(Android方面),Gradle就是替代了Ant执行编译,打包的过程。Gradle中,每一个待编译的工程都叫一个Project。每一个Project在构建的时候都包含一系列的Task。比如一个Android APK的编译可能包含:Java源码编译Task、资源编译Task、JNI编译Task、lint检查Task、签名Task、打包生成APK的Task等。一个Project到底包含多少个Task,其实是由编译脚本指定的插件决定。插件是什么呢?插件就是用来定义Task,并具体执行这些Task的东西。
下面我们就来简单了解一下这一过程。
二、Gradle基本内容
说到gradle,很多人会发现其实一个project可能包含很多个build.gradle。(至少两个一个是project根目录下面的,一个是module根目录下面的;如果你有多个module那么每个module下面对应有一个build.gradle)。我们先来讲一下project下的gradle。
如下图:
1.project下的build.gradle
直接上project根目录下的build.gradle文件内容,大致说明已经有注释了,其余就不做详细说明了。
// Top-level build file where you can add configuration options common to all sub-projects/modules.
// project根目录下的build.gradle用于添加子工程或模块(所谓的module)共用的配置项。
// "buildscript"的类型为script block,而且是最上层的script block,用于配置Gradle的Project实例。
// 其API文档为https://docs.gradle.org/current/dsl/org.gradle.api.Project.html#org.gradle.api.Project:buildscript(groovy.lang.Closure)
// 其余的根script block有"allprojects", "dependencies", "configurations"等,更多的可见https://docs.gradle.org/current/dsl/的“Build script structure”一节。
// Script Block是一种method的调用,传入的参数为configuration closure。执行后会对Project的属性进行配置。
// 此处的"buildscript"用于配置Project的build script的classpath。
buildscript {
repositories {
// 代码托管库,可以从https://jcenter.bintray.com/下载对应的代码库
jcenter()
//同理于jcenter(),申明代码托管库Google,如果需要相应的代码库,那么就会去下载
google()
//有时你可能还会使用maven的代码托管库
//maven{ url 'https://jitpack.io'}
}
//这里面依赖的插件应用于整个project,不同于module下面的build.gradle只应用于当前的module
dependencies {
//声明了一个Gradle插件用来作为Android开发。3.2.1为gradle版本号
classpath 'com.android.tools.build:gradle:3.2.1'
// classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
}
}
allprojects {
repositories {
jcenter()
google()
}
}
2.module下的build.gradle(重点)
1).apply plugin,声明是Android应用程序还是库模块
//声明是Android程序,
//com.android.application 表示这是一个应用程序模块,可直接运行
apply plugin: 'com.android.application'
//apply plugin: