返回

Android Gradle Plugin —— 初窥门径 (三)

Android

在上一篇文章中,我们讲解了AbstractAppPlugin类中初始化了ApplicationTaskManager类。ApplicationTaskManager类中创建了许许多多的Task,包含了整个构建流程。从下文中我们可以简单地查看有哪些Task。

// 编译 resource.arsc
:app:mergeResources
// 编译 AndroidManifest.xml
:app:mergeManifests
// 创建 dex
:app:mergeDexArchives
// 创建 proguard 混淆代码
:app:transformClassesAndResourcesWithProguardForApp
// 创建 mapping.txt
:app:transformClassesWithJarMergingForApp
// 打包 dex
:app:dexBuildOutput
// 组合 app
:app:assembleApp

从这些Task中,我们可以看到,构建流程大致可以分为以下几个步骤:

  1. 合并资源
  2. 合并清单文件
  3. 合并dex文件
  4. 混淆代码
  5. 打包dex文件
  6. 组合app

这些步骤是Gradle构建Android应用的默认流程。当然,我们可以通过修改Gradle脚本来改变这个流程。

下面,我们将详细介绍AbstractAppPlugin类和ApplicationTaskManager类在构建流程中的作用。

AbstractAppPlugin类

AbstractAppPlugin类是Gradle构建Android应用的入口类。这个类继承了BasePlugin类,并实现了IPlugin接口。IPlugin接口定义了Gradle插件需要实现的方法,比如apply方法。apply方法是Gradle插件的入口方法,在这个方法中,插件可以对项目进行一些操作,比如添加Task、配置构建环境等。

在AbstractAppPlugin类的apply方法中,主要做了以下几件事:

  1. 创建了一个ApplicationTaskManager对象。
  2. 调用ApplicationTaskManager对象的createTasks方法来创建Task。
  3. 调用ApplicationTaskManager对象的configTasks方法来配置Task。

ApplicationTaskManager类

ApplicationTaskManager类负责管理构建流程中的Task。这个类提供了以下几个方法:

  • createTasks方法:创建一个Task列表。
  • configTasks方法:配置Task。
  • getTaskNames方法:获取Task的名称列表。

createTasks方法会创建一个Task列表,这些Task包含了整个构建流程。configTasks方法会配置Task,比如设置Task的依赖关系、输入输出文件等。getTaskNames方法会获取Task的名称列表。

通过对AbstractAppPlugin类和ApplicationTaskManager类的了解,我们可以更好地理解Gradle构建Android应用的流程。