组件化

  • 什么是组件化
  • 组件化的规则
  • 为什么要有组件化
  • 如何给一个非组件化项目引入组件化


什么是组件化

组件化就是把一个完整的APP或者是模块拆分成许多个子模块,每个子模块可以进行独立的编译和运行,每个模块之间不相互依赖,但是又可以相互交互。

组件化的规则

下图为组件化的架构图:

Android 组件化设计模式 android组件化原理_组件化


集成模式: 所有的业务组件被“app壳工程”依赖,组成一个完整的APP;

组件模式: 可以独立开发业务组件,每一个业务组件就是一个APP;

app壳工程: 负责管理各个业务组件,和打包apk,没有具体的业务功能;

业务组件: 根据公司具体业务而独立形成一个的工程;

**Main组件:**属于业务组件,指定APP启动页面、主界面 ;

Common组件: 也就是功能组件(component_base 模块),支撑业务组件的基础,提供多数业务组件需要的功能,例如提供网络请求功能;

component_data组件: 这里我存放了与项目相关的公共数据,例如bean的基类,IntentKV存数据的键值对等.

第三方SDK组件: 集成微信,支付宝支付,分享,推送等常用的第三方框架.

为什么要有组件化

1.提高组件的复用性:直接将复用的的代码做成Android Module,打包AAR上传代码仓库,使用组件化的规则来进行约束,可以提高复用的便捷性。
2.降低组件间的耦合:通过组件化的规则把代码拆分成不同的模块,模块要做到高内聚,低耦合,模块间不能直接调用,这样会使代码更容易维护,模块的BUG率降低。

如何给一个非组件化项目引入组件化

剥离公共库和产品基本库
将一些基础组件从主工程剥离出来,形成产品自己的私有基础库仓库,为独立组件的分离做准备
公共库:组件化中间件,第三方SDK的封装,网络和页面监控有关,第三方分享库等等
产品基本库:自定义下拉菜单,循环滚动界面等等自定义的UI基础组件库
独立业务模块单独成库
按照需求将一些相对独立的业务模块单独成库,单独在一个工程上进行开发、测试
对外服务接口最小化
我们可以在第二步的基础上总结其他组件和主工程的需求调用,根据需求总结和抽象出当前业务组件对外服务的最小化接口以及页面跳转调用。
一般情况下,组件之间的通信需求:URL导航+服务接口调用+消息变量定义