什么是组件化:
将APP按业务及功能拆分为多个模块,每个模块为一个单独的组件(Module),各组件之间相互隔离并行开发,组件可以单独编译独立运行。

加油宝组件化改造背景:

  1. APP不断跌代,业务逐渐壮大,业务之间耦合严重。
  2. 不合理的设计,项目维护与迭代变得困难。
  3. 单Module项目,编译速度下降,影响开发与调试效率。

加油宝组件化改造目标:

  1. 代码结构清晰化
  2. 业务解耦合,业务组件可以单独调试
  3. 易于维护与测试

组件化基本结构

  • 上层Main App相当于运行的容器,集成所有业务组件形成一个完整功能的APP。
  • 中间层Module,是功能完整的独立业务组件,组件之间不可以相互依赖。
  • 底层基础库Library,提供基础功能,被业务组件依赖。

组件化改造大流程

本次改造总共分为五个阶段,由简入繁,采用渐近式改造项目。

基础资源

将基础通用资源拆分出来,独立为一个BaseRes Module。方便被业务组件引用。

基础库

将基础功能从项目中拆分出来,独立为一个BaseLib Module。方便被业务组件依赖。

组件拆分

  • 按业务功能将组件进行划分
  • 组件可在Application与Library间切换
  • 组件生命周期,加载、卸载、降维
  • 组件间代码隔离

组件通信

  • 路由通信,处理各组件间页面跳转。
  • 事件通信,处理各组件间动作传递。
  • 数据通信,处理各组件间数据传递。

业务重构

各业务组件可按需选择合适的架构设计。

改造难点

  • 需要熟悉原有代码逻辑,并深入理解业务,划分代码边界。
  • 组件化改造可能影响迭代进度。

业内成熟方案

  1. CC
  2. JIMU

参考

  1. Android彻底组件化方案实践
  2. Android架构思考(模块化、多进程)
  3. 聚美组件化实践之路