摘要
为了让大家能快速对android组件化有个整体的认识,本文将从多个维度对目前网上一些有代表性的开源组件化开发方案进行对比,从而更好的区分各组件化方案的特点,快速选择适合自己使用的方案深入学习并使用,在面试中被问到时也能做到心中有数。
前言
android平台上组件化开发的概念近两年非常火热,有些同学反映在面试中被问到的频率也很高。
目前网上关于组件化开发方案的文章、开源库比较多,让很多初学者感到迷茫,不知该从何处入手,难以确定自身的业务特性适合使用哪种框架,如果全部都学习一遍成本比较高,而且在学习过程中容易将各方案的一些特性记混淆。
为了让大家能快速对android组件化有个整体的认识,本文将从多个维度对目前网上一些有代表性的开源组件化开发方案进行对比,从而更好的区分各组件化方案的特点,快速选择适合自己使用的方案深入学习并使用,在面试中被问到时也能做到心中有数。
由于篇幅及个人精力所限,只选取了比较有代表性的几个组件化方案进行比较,对比内容中如有谬误之处,欢迎大家指正,可以在评论中留言或者提issue和pr给我,和我一起完善更多组件化方案的对比,降低开发者学习组件化技术的难度。
持续更新中,欢迎watch、star
对比表
markdown语法对表格支持的不太友好,为了方便查看,下面贴出对比表的截图,具体的表格见github
手机上图片显示不清晰,请点击此处看大图
表格中框架的相关链接
其它比较有特色的组件化方案简介
51信用卡路由方案OkDeepLink
*曾经在作者的github账号上开源,现已删除,作者在博文中提到后续2.0版会放到公司的github账号上,但一直未发布。* [这里](https://github.com/jjerry/OkDeepLink)有个fork版本 这个方案中使用aspectJ来实现路由表的自动注册,与其它方案不太一样,不过此方案的作者也打算废弃这种方式,理由是aspectJ还是太重了 这个方案文章中还提到了关于路由安全的措施,其中有使用URL中加签名的方式来屏蔽非法访问,类似于客户端连接服务端的http请求对参数进行加密校验
组件总线方案ModuleBus
介绍文档:[组件化开发跨module交互方式---ModuleBus交互](https://juejin.im/post/58524bd2b123db00655b4e99) 这个方案的特别之处在于其借鉴了[EventBus](https://github.com/greenrobot/EventBus)的思想,组件的注册/注销和组件调用的事件发送都跟EventBus类似
美柚路由方案RouterKit
这个方案的特别之处在于其组件自动注册的方案:通过apt生成每个module的路由表,然后[复制到app的assets目录](https://github.com/gybin02/RouterKit/blob/master/app/build.gradle#L60:1),运行的时候遍历asset目录,[反射对应的activity](https://github.com/gybin02/RouterKit/blob/master/jet_router/src/main/java/com/meiyou/router/Router.java#L322:17)
- 其它(欢迎给我提issue或pr补充!)