gradle

Android之Gradle<第一篇>:入门

2020-06-01  本文已影响0人  NoBugException

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。

图片.png

[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

输出结果如下:

图片.png

[Gradle Wrapper]

Wrapper,顾名思义,其实就是对Gradle的一层包装,便于在团队开发过程中统一Gradle构建的版本。

图片.png

如图所示,每个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.errorlogger.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,如下:

图片.png

window环境下使用gradlew或gradlew.bat去执行task,但如果在linux环境下,必须加前缀 ./,在linux环境下的命令如下:

./gradlew -q test
./gradlew.bat -q test

[刷新依赖]

当我们在项目中修改依赖时,在界面的右上角会出现这样一个按钮:

图片.png

点击Sync Now可以刷新依赖。当然,Gradle命令也可以刷新依赖:

gradlew --refresh-dependencies assemble

[执行多个任务]

Gradle支持执行多个命令,只需要用空格分隔即可,如下:

gradlew test1 test2 test3

[本章完...]

上一篇下一篇

猜你喜欢

热点阅读