《Android Gradle》读书笔记:初识Gradle

Gradle入门

Gradle是一款优秀的构建工具,它的DSL基于Groovy实现,可以通过代码来控制构建。Gradle构建的大部分功能都是通过插件的方式实现。

Gradle环境配置

Linux Ubuntu环境下搭建Gradle环境

Ubuntu 16.04
下载地址:https://gradle.org
下载的版本为 all版本,all版本包含了Gradle SDK所有相关的内容。
all 版本的目录包括:

  • bin
  • docs:API、DSL 指南等文档
  • init.d gradle的初始话脚本目录
  • lib 相关库
  • LICENSE
  • media 一些icon资源
  • NOTICE
  • samples 示例
  • src 源文件

运行gradle

要运行gradle必须把 GRADLE_HOME/bin目录添加到环境变量PATH的路径中
Ubuntu 命令

GRADLE_HOME=/usr/local/gradle/gradle-3.5
PATH=${PATH}:${GRADLE_HOME}/bin
export GRADLE_HOME PATH
$:source ~/.bashrc

然后在控制台输入
gradle -v
打印出gradle版本号、Groovy版本号、JVM等相关信息 则表示已经配置成功

Gradle版Hello World

  • 新建一个目录。然后在该目录下创建一个文件,build.gradle 输入一下内容:
task hello{
    doLast{
        printin 'Hello World gradle'
    }
}
  • 打开终端,然后定位到build.gradle 使用gradle -q hello 来执行构建脚本
$ gradle -q hello
Hello World gradle

分析执行过程:
build.gradle是Gradle默认的构建脚本文件,执行Gradle命令会默认加载当前目录下的build.gradle脚本。
我们写的这个build.gradle 定义了一个任务Task,任务的名字叫hello。并且给hello添加了一个动作,官方的名字叫做Action。其实就是一段Groovy语言实现的闭包。也就是业务代码逻辑或者回调实现。doLast就意味着Task执行完毕之后要回调doLast的这部分闭包代码实现
对于 gradle -q hello 这段运行命令,要执行build.gradle脚本中定义的名为hello的Task,-q参数用于控制gradle输出的日志级别
任务语句中:println'hello world'是System.out.println("hello world")的简写方式,gradle可以识别它。

Gradle Wrapper

Wrapper就是对Gradle的一层封装,便于在团队开发过程中统一Gradle构建的版本,这样大家都可以使用统一的Gradle来进行版本构建。
Wrapper在Windows下是一个批处理脚本,在Linux中是一个shell脚本。
当使用Wrapper启动Gradle的时候,Wrapper会检查Gradle有没有被下载关联,如果没有会从配置库(Gradle官方库)进行下载并运行构建。
使用Wrapper的好处是我们不需要专门去配置环境,只需要执行Wrapper命令。

生成Wrapper

Gradle提供了内置的Wrapper task帮助我们自动生成Wrapper所需的目录文件,在一个项目的根目录中输入gradle wrapper即可生成:

gradle wrapper
:wrapper

BUILD SUCCESSFUL

Total time: 0.859 secs

  • 生成的文件结构
    • gradle
      • wrapper
        • gradle-wrapper.jar
        • gradle-wrapper.properties
    • gradlew
    • gradlew.bat
      gradlew和gradlew.bat分别是Linux和Windows下的可执行脚本,用法和Gradle原生的命令是一样的。
      gradle-wrapper.jar是具体业务逻辑实现的jar包,gradlew最终还是使用java执行这个jar包来执行相关Gradle操作
      gradle-wrapper.properties是配置文件,用于配置Gradle的版本等

Wrapper配置

在执行gradle wrapper生成相关文件的时候,可以指定一些参数,来控制Wrapper的生成

--gradle-version 用于指定gradle版本
--gradle-distribution-url 用于指定Gradle发行版的url地址

如果在调用gradle wrapper 的时候不添加任何的参数,那么就会使用当前Gradle的版本作为生成的Wrapper的gradle version

gradle-wrapper.properties

配置文件字段:
distributionBase:下载的Gradle压缩包解压后存储的主目录
distributionPath:相对于distributionBase的解压后的Gradle压缩包的路径
zipStoreBase:存放zip压缩包路径
distributionUrl:Gradle发行版压缩包的下载地址

自定义Wrapper Task

task wrapper(type:Wrapper){
  gradleversion = '2.4'
}

Gradle 日志

Gradle日志级别:

  • ERROR 错误消息
  • QUIET 重要消息
  • WARING 警告消息
  • LIFECYCLE 进度消息
  • INFO 信息消息
  • DEBUG 调试消息

我们需要输出指定级别以上的消息时

# 输出QUIET级别及其之上的日志信息
$ gradle -q tasks
# 输出INFO级别及其之上的日志信息
$ gradle -i tasks
  • 无选项 LIFECYCLE及其更高级别
    • q或者 --quiet QUIET及其更高级别
  • -i或者 --info INOF及其更高级别
  • -d或者 --dubug DEBUG及其更高级别

输出错误堆栈信息

在构建失败的情况下,我们可以输出错误的堆栈信息来帮助我们排查错误

  • 无选项 不输出
  • -s或者 --stacktrace 输出关键性的堆栈信息
  • -S或者 --full-stracktrace 输出全部堆栈信息

日志信息调试

我们在编写Gradle脚本的时候,需要输出一些日志来验证我们的逻辑是否正确
我们可以使用 println来进行打印,还可以使用内置的logger灵活地控制输出不同级别的日志

  • logger.quiet('quiet信息')
  • logger.error('error信息')
  • logger.warn('warn信息')
  • logger.lifecycle('lifecycle信息')
  • logger.info('info信息')
  • logger.debug('debug信息')
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Gradle是一款非常优秀的构建系统工具,它的DSL基于Groovy实现,可以让你很方便的通过代码控制这些DSL来...
    飞雪无情flysnow_org阅读 8,886评论 0 35
  • Gradle 是一款非常优秀的构建系统工具,它的 DSL 基于 Groovy 实现,可以让你很方便的通过代码控制这...
    acc8226阅读 5,348评论 1 12
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,889评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,016评论 25 709
  • 你对视过星星和月 是在诉求思念丰缺吗 人们劳思苦想得不到的 间断地遽然轰塌 四月的春又复发 月同有濩落菀枯日 天旋...
    人不交阅读 1,252评论 1 2

友情链接更多精彩内容