gradle 插件以及执行过程解析

gradle 插件以及执行过程解析


在 Android Studio 中,项目都是使用 Gradle 来构建的,那么我们通常使用的 Gradle 插件是如何执行的呢?

Gradle 的执行步骤

简单说 gradle 是一种构建工具,用来控制代码的编译、构建、打包等过程,有点像 C/C++ 项目中的 Make 工具。gradle 执行一次 build 总共可以分为三个步骤:

1. 初始化阶段

读取根工程中 setting.gradle 中的 include 信息,确定当前项目中哪几个工程加入构建,创建 project 实例。

例如:

include ':app', ':moudle1', ':moudle2'

Gradle 构建时会去读取根工程中 setting.gradle 中的 include 信息,决定有哪几个工程加入构建,创建 project 实例,例如示例中有3个工程参与了构建。

2. 配置阶段

执行项目中的 build.gradle 脚本文件,配置 project 对象,一个对象由多个任务组成,此阶段也会去创建、配置 task 及相关信息。

3. 执行阶段

根据 gradle 命令传递过来的 task 名称,执行相关依赖任务。

Gradle 插件的使用方法

Gradle 的插件一般有以下使用方式:

  • 直接在项目中的 gradle 文件里编写,这种方式的缺点是无法复用插件代码,在其他项目中还得复制一遍代码。
  • 在独立的项目里编写插件,然后发布到中央仓库,之后直接引用就可以了,优点就是可复用。

project 和 tasks

我们再来看两个重要的概念:project 和 tasks。

在 grade 中的两大重要的概念,分别是 project 和 tasks。每一次构建都是有至少一个 project 来完成,注意,这里的 project 和 Android studio 中的 project 不是一个概念。每个 project 有至少一个 tasks。每一个 build.grade 文件代表着一个 project。tasks 在 build.gradle 中定义。当初始化构建进程,gradle 会基于 build 文件,集合所有的 project 和 tasks,一个 tasks 包含了一系列动作,然后它们将会按照顺序执行,一个动作就是一段被执行的代码,这有点类似与方法的概念。

Task

gradle 的工作都由一个个 Task 来执行。Task 可以指定它所依赖的 Task,或者它要在另一个 Task 之前或者之后运行。

将处理逻辑分在不同的 Task 中有这么两个好处:

  1. 业务解耦,有利于维护和提高代码健壮性。
  2. 增量编译,当 Task 的输入/输出没有变化时,不用再次运行,直接复用。

创建 Task 常见的方式有两种:

  1. 在 build.gradle 中直接创建。
  2. 通过插件创建。

build.gradle 中一般创建功能简单的 Task,逻辑复杂的 Task 通常由插件创建,否则会使得 build.gradle 文件臃肿不堪。可见插件也是 gradle 一个重要组成部分,我们再来看看插件是做什么的。

插件

gradle 核心的逻辑比较简单,丰富的构建功能都是通过插件的方式扩展的。比如 Android 的构建逻辑肯定不是 gradle 官方代码自带的,而是 Android 写了对应的 gradle 插件来实现。这个特性保证了 gradle 功能的灵活性。

在 Android 中,最常见的两个插件分别是:

  1. com.android.application
  2. com.android.library

那么插件如何使用呢?它通常在 build.gradle 文件中来使用的:

apply plugin: 'com.android.application'

这表示所在的 module 是一个 app module,而使用 com.android.library 插件表示所在 module 是一个 library module,两种插件分别会对该 module 做不同的配置。

好了,gradle 以及 gradle 插件主要的理论知识我们已经了解了,下一章我们来分析它在 Android studio 中的使用。


**PS:更多精彩内容,请查看 --> 《Android 性能优化》
**PS:更多精彩内容,请查看 --> 《Android 性能优化》
**PS:更多精彩内容,请查看 --> 《Android 性能优化》

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卜大爷

觉得不错的可以给我加油哦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值