
Gradle系列学习:Gradle的简介、常用命令和生命周期
一 Gradle简介
1.1 gralde
Gradle是一个项目构建工具,它可以按照一定的规则把一堆目录和文件关联起来,自动化地构建从而形成一个项目。AndroidStudio的build就是通过Gradle来实现的。
构建工具的发展历史简约回顾:很久之前我们用ant来自动化打包安卓,但jar包依赖问题处理起来很麻烦。于是有了maven,它除了自动化打包外,还可以自动下载对应的jar包依赖,但maven逻辑死板,定制麻烦。gradle兼顾两者之长,脚本灵活,成为现在安卓官方的自动化构建工具。
Gradle版本举例:gradle-6.1.1-all.zip。它通常位于:项目主目录 gradle 文件夹->wrapper->gradle-wrapper.properties。
Android Studio 的自动化构建以 Gradle 为基础,并且 ,Android Gradle 插件添加了几项专用于构建 Android 应用的功能。
Gradle版本可以在 Android Studio 的 File > Project Structure > Project 菜单中指定 ,也可以通过在 gradle/wrapper/gradle-wrapper.properties 文件中指定。以下示例在 gradle-wrapper.properties 文件中将 Gradle 的版本设置为 6.1.1。
1.2 Gradle插件
Gradle插件是针对Gradle发行版和Android SDK Build Tools封装的一个工具,主要有两大功能:
调用Gradle本身的代码和批处理工具来构建项目
调用Android SDK的编译、打包功能
Gradle插件版本可在 Android Studio 的 File > Project Structure > Project 菜单中可指定,也可以在顶级 build.gradle 文件中进行指定。该指定的插件版本将用于在相应 Android Studio 项目中构建的所有模块。以下示例从项目的build.gradle 文件中将插件的版本设置为 4.0.1:
Gradle插件会有版本号,每个版本号又对应有一个或一些 Gradle发行版本(一般是限定一个最低版本)。下表列出了各个 Android Gradle 插件版本所需的 Gradle 版本。为了获得最佳性能,您应使用 Gradle 和插件这两者的最新版本:
二 Gradle 常用命令
2.1 Gradle 查询命令
查看主要任务
查看所有任务,包括缓存任务等等
2.2 Gradle 执行命令
执行某个module [moduleName] 的某个任务[TaskName]
2.3 Gradle 快速构建命令
Gradle的快速构建命令来替代 IDE 的可视化构建操作,如我们最常用的 clean、build 等等。
查看构建版本
清除 build 文件夹
检查依赖并编译打包,注意:build 命令会把 debug、release 环境的包都构建出来。
编译并安装 debug 包
编译并打印日志
编译并输出性能报告,性能报告一般在构建工程根目录 build/reports/profile 下
调试模式构建并打印堆栈日志
强制更新最新依赖,清除构建后再构建
编译并打 Debug 包
# 简化版命令,取各个单词的首字母
编译并打 Release 的包
# 简化版命令,取各个单词的首字母
2.4 Gradle 安装命令
Release 模式打包并安装
卸载 Release 模式包
debug release 模式全部渠道打包
2.5 Gradle 查看包依赖命令
查看项目根目录下的依赖
查看 app 模块下的依赖
查看 app 模块下包含 implementation 关键字的依赖项目
三 :gradle生命周期
在点击Android Studio右上角的大象图标(Snyc Project with Gradle Files),gralde便会为我们构建好我们的安卓工程。整个构建的过程分成了三个部分:
3.1 初始化构建
上图是一个常见的多组件工程的Gradle Scripts,以该工程的gradle构建为例。
在点击Android Studio右上角的大象图标(Snyc Project with Gradle Files)后,gradle会为settings.gadle文件创建一个Settings对象,读取和执行settings.gadle文件中的所有配置代码:
Settings对象,会根据settings.gadle文件中包含的所有Project项目,去寻找其对应的build.gradle文件,并依此创建具有层次关系的Project对象。
想更多地了解这两个Interface,可以去官网进一步学习,在此不赘述。
流程总结:
点击构建(Snyc Project with Gradle Files),gradle会根据settings.gadle文件创建对应的Settings对象,名称就是包含settings.gradle文件的目录名,该对象根据settings.gradle文件中include:Project自动为根项目创建Porject对象,Project对象和build.gradle文件一一对应。
3.2 配置构建
执行所有project的build.gradle文件中的配置代码,下载三方,依赖,构建Task的依赖关系图。构建Task的依赖关系图是Gradle的核心。
3.3 执行构建
根据任务命令以及参数,确定要执行的任务子集,并执行。对多项目而言,每次执行任务,都需要执行前面的初始化和包含的所有项目的配置。
build.gradle中,编写代码如下可得到对应log
3.4 hook
我们有时需要在Project或Task执行的某阶段做业务处理,此时就需要hook,Gradle官方提供了以下方法:文档
Gradle执行流程中上述方法的执行顺序如下:
代码示例:
