Gradle是一款非常优秀的构建系统工具,它的DSL基于Groovy实现,可以让你很方便地通过代码控制这些DSL来达到你构建的目的。Gradle构建的大部分功能都是通过插件的方式来实现,所以非常灵活方便,如果内置插件不能满足你的需求,你可以自定义自己的插件。
[Gradle环境变量]
找到Gradle的安装路径,如:
C:\Users\Administrator\.gradle\wrapper\dists\gradle-6.1.1-all\cfmwm155h49vnt3hynmlrsdst\gradle-6.1.1\bin
将bin文件夹的路径配置到环境变量中。
输入:gradle -version
如果打印出如下数据,则说明Gradle环境变量已经配置OK。
[Hello Word演示]
使用Android Studio构建一个空白项目,找到根目录下的build.gradle
文件,在这个文件下输入如下代码:
task hello{
doLast{
print 'Hello Word!'
}
}
鼠标移动到这个方法上,右击Run 'android [hello]'
,打印结果如下:
> Task :hello
Hello Word!
BUILD SUCCESSFUL in 234ms
1 actionable task: 1 executed
13:52:11: Task execution finished 'hello'.
当然,也可以输入命令:gradle -q hello
来执行task
输出结果如下:
[Gradle Wrapper]
Wrapper,顾名思义,其实就是对Gradle的一层包装,便于在团队开发过程中统一Gradle构建的版本。
如图所示,每个Android项目根目录下都有一个gradle文件夹,下级还有一个wrapper文件夹,其中gradle-wrapper.properties
文件中指定了gradle的下载地址,我们可以通过修改distributionUrl
值来更改下载地址。
如果删除gradle文件夹,那么可以重新编译项目自动生成gradle文件夹,当然也可以直接输入命令自动生成:
gradle wrapper
[动态配置Wrapper属性]
#Mon Jun 01 19:22:57 CST 2020
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
以上是Wrapper的原始属性,是项目在编译过程中自动生成的,那么,有没有办法可以动态设置这些属性呢?
答案是有的,Wrapper是一个任务(task),我们完全可以自定义一个Wrapper任务,代码如下:
task myWrapper(type: Wrapper){
distributionBase = 'GRADLE_USER_HOME'
distributionPath = 'wrapper/dists'
distributionPath = 'wrapper/dists'
gradleVersion = '6.1.1'
archiveBase = 'GRADLE_USER_HOME'
distributionUrl = 'https://services.gradle.org/distributions/gradle-6.1.1-all.zip'
}
执行这个task时,gradle-wrapper.properties
的配置信息将会自动修改。
[Gradle日志]
Gradle日志也有级别的划分,如下表:
级别 | 用于 |
---|---|
error | 错误信息 |
quiet | 重要消息 |
warning | 警告消息 |
lifecycle | 进度消息 |
info | 信息消息 |
debug | 调试消息 |
首先,自定义一个task,如下代码已经列出所有打印日志的方法
task test{
println '我是一只小小小鸟'
logger.quiet('quiet日志输出')
logger.error('error日志输出')
logger.warn('warn日志输出')
logger.lifecycle('lifecycle日志输出')
logger.info('info日志输出')
logger.debug('debug日志输出')
}
其中,logger.error
和logger.warn
在高Gradle版本已被弃用,这两个输出日志的方法可以不加理会。
logger.quiet
:仅输出错误日志
logger.warn
:将日志级别设置为“警告”
logger.lifecycle
:默认级别,如果不执行级别则默认认为是lifecycle级别
logger.info
:将日志级别设置为“信息”
logger.debug
:登录调试模式(包括正常堆栈跟踪)
quiet日志输出举例:
gradle -q test
gradle -quiet test
gradle --quiet test
lifecycle日志输出举例:
gradle test
info日志输出举例:
gradle -i test
gradle -infotest
gradle --infotest
debug日志输出举例:
gradle -d test
gradle -debugtest
gradle --debugtest
[打印错误堆栈信息]
打印日志按照需求添加前缀限定日志输出的级别,那么打印错误堆栈信息也需要添加前缀:
-s 或者 --stacktrace:输出关键性堆栈信息
-S 或者 --full-stacktrace:输出全部堆栈信息
[Gradle命令行]
新建一个Android工程后,在工程根目录下有两个重要的文件:gradlew和gradlew.bat
gradle后面的字母w
就是wrapper
的简称。
切换到工程目录下,可以使用gradlew或gradlew.bat去执行task,如下:
window环境下使用gradlew或gradlew.bat去执行task,但如果在linux环境下,必须加前缀 ./
,在linux环境下的命令如下:
./gradlew -q test
./gradlew.bat -q test
[刷新依赖]
当我们在项目中修改依赖时,在界面的右上角会出现这样一个按钮:
点击Sync Now
可以刷新依赖。当然,Gradle命令也可以刷新依赖:
gradlew --refresh-dependencies assemble
[执行多个任务]
Gradle支持执行多个命令,只需要用空格分隔即可,如下:
gradlew test1 test2 test3
[本章完...]