【Android 修炼手册】Gradle 篇 -- Android Gradle Plugin 主要流程分析

本文详细分析了Android Gradle Plugin的主要流程,从插件启动的准备工作、配置项目、配置Extension,到创建不依赖flavor的task和构建task。通过阅读,你可以了解插件的构建流程、主要task的实现,并学会如何hook构建流程以添加自定义功能。同时,文章还介绍了Android应用模块(com.android.application)的关键步骤,如检查插件版本、配置AndroidBuilder和DataBindingBuilder,以及创建不同类型的Task。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

预备知识

  1. 理解 gradle 的基本开发
  2. 了解 gradle task 和 plugin 使用及开发
  3. 了解 android gradle plugin 的使用

看完本文可以达到什么程度

  1. 了解 android gradle plugin 的构建流程
  2. 了解 android gradle plugin 的主要 task 的实现
  3. 学会 hook android 构建流程,添加自己想要的功能

阅读前准备工作

  1. 项目添加 android gradle plugin 依赖
compile 'com.android.tools.build:gradle:3.0.1'

通过这种方式,可以直接依赖 plugin 的源码,读起来比较方便。
2. 官方对照源码地址 android gradle plugin 源码地址

大家可以直接 clone EasyGradle 项目,把 android-gradle-plugin-source/build.gradle 里的 implementation ‘com.android.tools.build:gradle:3.0.1’ 注释打开就可以了。

com.android.application 主要有下面几个流程:
plugin流程

一、插件启动的准备工作

plugin1

在前面讲解自定义插件的时候说到过,要定义一个 xxx.properties 文件,里面声明插件的入口类,而 xxx 就是 apply plugin 时候使用的 id,这里要知道 android gradle plugin 的入口类,看 com.android.application.properties 文件就可以,内容如下:

implementation-class=com.android.build.gradle.AppPlugin

这里定义了入口是 AppPlugin,AppPlugin 继承自 BasePlugin。
AppPlugin 里没有做太多的操作,主要是重写了 createTaskManager 和 createExtension,剩下的大部分工作还是在 BasePlugin 里做的。
插件准备工作中主要做的事情:

  1. 检查插件版本
// method: BasePlugin.apply()
checkPluginVersion();
  1. 检查 module 是否重名
// method: BasePlugin.apply()
// 方法中会遍历所有子项目,判断是否有重复的 id
this.checkModulesForErrors();
  1. 初始化插件信息
// method: BasePlugin.apply()
PluginInitializer.initialize(project, this.projectOptions);
// 创建 Profiler 文件
ProfilerInitializer.init(project, this.projectOptions);
// profiler 信息中写入 plugin 版本
ProcessProfileWriter.getProject(project.getPath()).setAndroidPluginVersion(Version.ANDROID_GRADLE_PLUGIN_VERSION).setAndroidPlugin(this.getAnalyticsPluginType()).setPluginGeneration(PluginGeneration.FIRST);

二、配置项目

plugin2

配置项目这一阶段主要做的事情:

  1. 检查 gradle 版本是否匹配
// method: BasePlugin.configureProject()
this.checkGradleVersion();
  1. 创建 AndroidBuilder和 DataBindingBuilder
  2. 引入 java plugin 和 jacoco plugi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值