美文网首页gradle
Android之Gradle<第一篇>:入门

Android之Gradle<第一篇>:入门

作者: NoBugException | 来源:发表于2020-06-01 20:38 被阅读0次

    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
    

    [本章完...]

    相关文章

      网友评论

        本文标题:Android之Gradle<第一篇>:入门

        本文链接:https://www.haomeiwen.com/subject/qjijzhtx.html