Android Gradle Plugin —— 初窥门径 (三)
2023-11-28 10:38:53
在上一篇文章中,我们讲解了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中,我们可以看到,构建流程大致可以分为以下几个步骤:
- 合并资源
- 合并清单文件
- 合并dex文件
- 混淆代码
- 打包dex文件
- 组合app
这些步骤是Gradle构建Android应用的默认流程。当然,我们可以通过修改Gradle脚本来改变这个流程。
下面,我们将详细介绍AbstractAppPlugin类和ApplicationTaskManager类在构建流程中的作用。
AbstractAppPlugin类
AbstractAppPlugin类是Gradle构建Android应用的入口类。这个类继承了BasePlugin类,并实现了IPlugin接口。IPlugin接口定义了Gradle插件需要实现的方法,比如apply方法。apply方法是Gradle插件的入口方法,在这个方法中,插件可以对项目进行一些操作,比如添加Task、配置构建环境等。
在AbstractAppPlugin类的apply方法中,主要做了以下几件事:
- 创建了一个ApplicationTaskManager对象。
- 调用ApplicationTaskManager对象的createTasks方法来创建Task。
- 调用ApplicationTaskManager对象的configTasks方法来配置Task。
ApplicationTaskManager类
ApplicationTaskManager类负责管理构建流程中的Task。这个类提供了以下几个方法:
- createTasks方法:创建一个Task列表。
- configTasks方法:配置Task。
- getTaskNames方法:获取Task的名称列表。
createTasks方法会创建一个Task列表,这些Task包含了整个构建流程。configTasks方法会配置Task,比如设置Task的依赖关系、输入输出文件等。getTaskNames方法会获取Task的名称列表。
通过对AbstractAppPlugin类和ApplicationTaskManager类的了解,我们可以更好地理解Gradle构建Android应用的流程。