Android应用达到一定规模后业务会越来越多,所有业务模块在同一module下耦合性会越来越强,这种强耦合带来开发维护成本增加,开发调试效率也会变低,项目组件化就势在必行。

组件化带来的优点:

1.项目模块清晰,组件向内高聚合,对外低耦合;
2.项目成员可以专注于具体组件内业务逻辑,降低开发成本;
3.可以独立调试,提升开发调试效率;
4.可以产出全局功能组件,服务于整个团队,快速响应新项目,达到功能重用。

要实现组件化需要解决问题:

1.组件间页面如何跳转?
2.组件间如何实现功能调用?
3.如何独立组件或随意组合组件进行调试?
4.如何在各个组件间获取Application实例?
5.如何实现组件间代码隔离?

解决方式

针对以上五点问题找到以下五个解决方式:
1.利用路由框架实现页面也跳转,如ARoute,或者自行定义的路有跳转协议;
2.利用依赖注入实现组件间通信,调用方利用接口申明实现调用;
3.Android gradle提供两种插件,com.android.application表示App Module,com.android.library表示库Module,通过在gradle.properties中设置参数控制Module的插件类型制定App module,同时配置module的Application和manifest文件,这样就可以独立运行需要调整的module。
4.设计module_common组件创建BaseApplication,App壳module工程Application继承至BaseApplication,其他组件依赖module_common这样就拿到了Application实例。
5.组件之间不存在相互依赖,不能直接调用,它们都依赖到App壳module,这样就完成了组件间的隔离。

组件化框架结构: