Gradle构建流程学习笔记

一、Gradle简述

Gradle是一个自动化构建工具,它通过组织一系列的task来完成自动构建。以生成一个可用的apk为例,整个过程要经过 资源处理,javac编译,dex打包,apk打包,apk签名等步骤,每一个步骤即对应一个task。Gradle大多基于groovy编写。

二、知识前提

1、基本的Android开发知识
2、了解Android Studio的基本使用
3、熟悉Groovy语言
Groovy简述:
Groovy是一门基于JVM的语言,与java相通。Groovy有很多强大的特性,但这里只需要能读懂Android Studio的Gradle文件就可以了。
Groovy注释标记和java一样;groovy语句可以不用分号结尾;groovy支持动态类型,即变量在定义的时候可以不指定类型。或者用def来定义;定义函数时,参数的类型可以不指定,返回值可以是无类型的。可以不适用return,最后一行的执行结果返回。

Groovy中的数据类型:

  • 基本数据类型------>对应java中基本类型包装类
  • 容器类------>List(ArrayList)、Map(LinkedHashMap)、Range
  • 闭包/Closure(重要)

闭包就是一段可执行代码
闭包定义格式:

def 闭包名 = {参数->code} 或者 闭包名 = {code}

调用形式:

闭包对象.call(参数) 或者 闭包对象(参数)

在groovy中,如果一个函数只有一个参数,那调用这个函数时就可以省略括号;如果有多个参数,且最后一个参数是闭包,那闭包可以写在括号外面。
例如:

void afterEvaluate(Closure closure)
afterEvaluate({println “afterEvaluate”})----->afterEvaluate{println “afterEvaluate”}

MavenPom addFilter(String name, Closure filter)
addFilter(“add”,{println “addFilter”})----->addfilter(“add”){println “addFilter”}

三、Gradle基础

在Android Studio的工程结构当中,一个大的工程下面可能会有许多小工程,分为Library和application,每个小工程下面都有一个gradle文件,定义了这个工程编译时需要做的工作。在大工程的根目录下会有一个build.gradle文件和setting.gradle文件。前者用来配置小工程,而后者则声明了这个大工程下有哪些小工程。如下图:



Gradle的生命周期分为三个阶段:
1、initialization初始化阶段
该阶段会执行项目根目录下的setting.gradle文件,来分析哪些项目参与构建。
Setting.gradle里的主要方法:

  • include(projectPaths)
  • includeFlat(projectNames)
  • project(projectDir)
    2、configuration配置阶段
    该阶段会去加载所有参与构建的项目的build.gradle文件,会将每个build.gradle文件实例化为一个project对象并分析各project的依赖关系,下载依赖文件
    根目录Build.gradle里的主要方法:
  • buildscript //配置脚本的classpath
  • allprojects //配置项目及其子项目
  • respositories //配置仓库地址,后面的依赖会在这里配置的地址里去找
  • dependencies //配置项目的依赖



    子项目Build.gradle里的主要方法:

  • compileSdkVersion //指定编译需要的Sdk版本
  • defaultConfig // 指定默认的属性,会运用到所有的 variants 上
  • buildTypes // 一些编译属性可以在这里配置
  • productFlavor // 配置项目的 flavor,为不同渠道打包时常用



    3、执行阶段
    该阶段来执行具体的task。
    Task是gradle中的最小执行单元,所有的构建、打包、debug、test等都是执行了某个task,一个project下有许多个task,task之间也存在依赖关系,会先执行被依赖的task。点击Android Studio右侧的gradle按钮可看见所有task



    Gradle wrapper:
    gradle/wrapper/gradle-wrapper.properties 是一些 gradlewrapper 的配置,其中用的比较多的就是 distributionUrl,可以执行 gradle 的下载地址和版本。

    gradle/wrapper/gradle-wrapper.jar 是 gradlewrapper 运行需要的依赖包

Gradle的内容很多,时间关系这里暂时了解gradle的一些基础内容。

参考

最熟悉的陌生人 -- Gradle
读懂Android Studio中的Gradle文件
深入理解Android之Gradle
【Android 修炼手册】Gradle 篇 -- Gradle 的基本使用

你可能感兴趣的:(Gradle构建流程学习笔记)