本文对应的视频版本可以查看我的 bilibili 视频链接 《Android组件化治理(一)》,欢迎如果对您有帮助可以一键三连哦~
背景
随着项目的不断迭代 与重构 ,项目的组件数量越来越多,这样会引发两个比较直接的问题:
- 编译速度慢
- 开发效率变低
- 编译速度
- 组件数量过大,开发体验不佳
- 添加新组建不方便
- 调试底层组件不方便
问题描述
问题一:编译速度慢
解决方案:考虑将源码依赖改成 AAR 依赖
既然有两种形态(AAR和源码),那么肯定需要开关来控制,类似如下伪代码:
if(ModuleA_ImportSource){
implementation project(":ModuleA")
} else {
implementation 'xxx_group:ModuleA:1.0.0'
}
这样会存在两个问题:
- 如果组件个数很多,那么组件开关也会很多,因为是一对一关系。
- 需要组件的地方都会大量充斥着类似上面的模板代码,如果后期需要修改,要修改多个地方,不方便统一管理。
?
问题二:组件数量过大,开发体验不佳
随着时间的推移,项目组件的数量会越来越多,通常 AndroidStudio 左侧满屏是展示不全所有组件的,需要滑动鼠标。
在绝大多数迭代的时候一般只会改动 2-3 个组件,其余的组件不会修改,有时候需要去寻找特定的组件。
解决方案:那能不能不修改的组件,不在 AndroidStudio 中展示,只展示你需要修改的组件。
问题三:调试底层组件不方便
”调试底层组件不方便“ 和 ”添加新组建不方便“ 可以归为一类问题。
一般底层的组件,如工具组件:UtilsModule。这样的组件一般长期不会修改,所以不会将源码引入到 AndroidStudio 中(如果业务组件100多个,还有自己各种封装的组件全都展示的话,AS需要展示的组件就会非常多,相当于你进入了一个文件夹,里面有几百个文件夹,然后你需要在里面找组件,是非常痛苦的一件事情),我们会将它像第三方库一样通过 AAR 引入进来。但是有时候又需要在该组件中添加新工具类或者修复 bug。此时需要修改两个地方:
-
git clone UtilsModule 代码,然后修改 settings.gradle 文件,这样 UtilsModule 才会在 AS 中展示 -
所有依赖 UtilsModule 的地方全部改成源码依赖(可能存在很多地方,如果改的不全,就会存在某组件对 UtilsModule 是源码依赖,另一个组件对 UtilsModule 是 AAR 依赖的情况)。 -
上线后又得将上面的配置全部去掉,整个过程下来非常不方便。
解决方案
开发一个 gradle plugin 插件,用于管理组件之间的依赖。
实现的主要功能有:
最终结果
{
"modules": [
{
"git": "git@your_git_url.git",
"moduleName": "LibBase",
"version": "5.9.23",
"importSource": false
},
{
"git": "git@your_git_url.git",
"moduleName": "LibFormPageWidgets",
"version": "5.9.21",
"importSource": false
}
]
}
属性描述:
- importSource: 用于是源码还是AAR依赖
- moduleName: 组件名称,同时也是maven artifactId
- version: AAR的版本信息
- groupId: maven的group
|