跳至主要內容

第2章-组件化选型

引领潮流大约 4 分钟Android组件化archive

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

####2、其他组件方案对比 ######1、美团猫眼电影android模块化实战open in new window 可以学习到的思想 1、无入侵式配置各种服务 采用serviceload 缺点: 最重要一点:无代码示例 1、serviceload (SPI)对于用户来讲不易使用 2、无论spi还是arouter,都不能解决配置下沉到base,不如使用arouter 3、最好解决方案还是"腾讯.api方案"

2、 Android彻底组件化demo发布open in new window

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

3、WMRouter:美团外卖Android开源路由框架open in new window

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

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

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

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

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

######4、使用简单但功能强大的安卓组件化框架 CCopen in new window 介绍网页: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 Dubboopen in new window
  • 软件架构

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

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

######6、Arouteropen in new window

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

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

总之,采用Arouter方案

7、微信Android模块化架构重构实践open in new window

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

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

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

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

#####Android架构思考(模块化、多进程) 也推荐这篇文章 http://blog.spinytech.com/2016/12/28/android_modularization/