组件化开发thor

第2章 组件化选型

2019-05-13  本文已影响41人  陈桐Caliburn

1、组件化选型结论

方案是Arouter+auto-register+自己造轮子补充
原因:arouter使用简单,可以做组件间解耦,
auto-register 解决了arouter加载组件是反射效率低下问题。原理asm修改字节码

2、其他组件方案对比

1、美团猫眼电影android模块化实战

可以学习到的思想
1、无入侵式配置各种服务
采用serviceload
缺点:
最重要一点:无代码示例
1、serviceload (SPI)对于用户来讲不易使用
2、无论spi还是arouter,都不能解决配置下沉到base,不如使用arouter
3、最好解决方案还是"腾讯.api方案"

2、 Android彻底组件化demo发布

可以学习到思想:
1、代码和资源隔离
2、组件单独运行和集成发布 ,提供gradle插件(采用)
3、借鉴采用javassit
缺点:
1、JIMI用户不多
2、API调用暴露了很多底层细节,开发者用户还需要反复看源代码,才能清晰明白
3、core代码写得不够洁癖

3、WMRouter:美团外卖Android开源路由框架

美团的博客:WMRouter:美团外卖Android开源路由框架
美团外卖开源路由框架 WMRouter 源码分析

最初背景:产品希望通过后台下发URI控制客户端跳到指定页面,从而实现灵活的运营配置

优点:
基于URI开发的框架,可灵活配置
自定义ServiceLoader,不错的扩展性,可以跨组件访问数据(采用)

缺点:
1、灵活性强,反衬易用性不足
2、ServiceLoader,并不能真正意义解除依赖,
还需要将Interfaces下沉的base,或者引用该moudle

总之,可以备选的,基于URI的优秀的路由框架

4、使用简单但功能强大的安卓组件化框架 CC

介绍网页:https://qibilly.com/CC-website/
优点:
1、文档全面介绍详实(采用)
2、组件间调用者(采用)
3、cc-register 采用asm,可以配合arouter(采用)
4、采用服务架构,将组件间关系扁平化

缺点:
1、集成太复杂
2、调用方式,还不够亲民
3、代码编写,暴露给用户细节太多
4、gradle的配置,实在是难以让人接受
5、跨组件调用,用不到RPC(AIDL)技术
6、RPC建议专门一个库实现,例如饿了么Hermes
7、组件提供的功能太多,提供api越多,后期兼容性越差,关键核心类要采用final修饰,避免使用者有歧义

总之:非常好的总线框架,学习成本高,需要经验

5、Apache Dubbo

分布式系统学习笔记
https://blog.csdn.net/lchpersonal521/article/details/84107272
优点
1、分布式服务,服务组件间隔离
2、服务降级,服务发现,服务注册
3、RPC+依赖注入+SPI+javassit
缺点:
这套思想应用安卓场景需要适配,参考CC

核心思想:依赖注入+SPI+RPC+javassit

6、Arouter

优点:
解除依赖,调用页面服务,只需要知道对应常量
使用简单易懂,用户群体大,资料详细

缺点:
常量需要下沉到基础库

总之,采用Arouter方案

7、微信Android模块化架构重构实践

优秀思想
①重塑模块化,分解为三个目标
1、改变通信方式 : spi+".api化" 采用
2、重新设计模块:重新设计代码分层,强化职责和设计
3、约束代码边界:隔离思想,采用pins工程
②代码之外,架构之内
1、模块负责人制度
2、重构与开发者心态
3、模块划分经验之谈

优点:指明思路和方向
缺点:代码需要自己实现

评价:采用微信的组件化思想,代码逻辑需要因地制宜实现

自己手动编写轮子Thor

组件化需要一套系统完整的方案,来综上所述的优点,也避免一些不易用的缺点,为了实现这个目标,最好的方案是Arouter+auto-register+自己造轮子补充
接下来一段时间,我要自己造轮子了,吼吼~~~

Android架构思考(模块化、多进程)

也推荐这篇文章
http://blog.spinytech.com/2016/12/28/android_modularization/

上一篇 下一篇

猜你喜欢

热点阅读