安卓组件化相关开源方案最全总结

热文导读 | 点击标题阅读

欢迎加入Java和Android架构社群

吊炸天!74款APP完整源码!

一份年薪30万的Android面试宝典,附答案


作者:齐翊

链接:https://juejin.im/post/5a7ab8846fb9a0634514a2f5


Android组件化解决方案都在这了,您可以根据项目实际需要选择适合自己的开源解决方案,快收藏吧!


一、摘要

为了让大家能快速对android组件化有个整体的认识,本文将从多个维度对目前网上一些有代表性的开源组件化开发方案进行对比,从而更好的区分各组件化方案的特点,快速选择适合自己使用的方案深入学习并使用,在面试中被问到时也能做到心中有数。

Android平台上组件化开发的概念近两年非常火热,有些同学反映在面试中被问到的频率也很高。

目前网上关于组件化开发方案的文章、开源库比较多,让很多初学者感到迷茫,不知该从何处入手,难以确定自身的业务特性适合使用哪种框架,如果全部都学习一遍成本比较高,而且在学习过程中容易将各方案的一些特性记混淆。

为了让大家能快速对android组件化有个整体的认识,本文将从多个维度对目前网上一些有代表性的开源组件化开发方案进行对比,从而更好的区分各组件化方案的特点,快速选择适合自己使用的方案深入学习并使用,在面试中被问到时也能做到心中有数。

由于篇幅及个人精力所限,只选取了比较有代表性的几个组件化方案进行比较,对比内容中如有谬误之处,欢迎大家指正,可以在评论中留言或者提issue和pr给我,和我一起完善更多组件化方案的对比,降低开发者学习组件化技术的难度。


https://github.com/luckybilly/AndroidComponentizeLibs

持续更新中,欢迎watch、star


二、对比表

markdown语法对表格支持的不太友好,为了方便查看,下面贴出对比表的截图,具体的表格见github:



放大凑合可以看,非常清晰的可以查看github上的表格。


表格中框架的相关链接:


项目1:CC


地址:https://github.com/luckybilly/CC

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


相关学习材料:

  • wiki

    https://github.com/luckybilly/CC/wiki

  • CC框架实践(1):实现登录成功再进入目标界面功能

    http://t.cn/REb6eLO

  • CC框架实践(2):Fragment和View的组件化
    http://t.cn/REbX0Ds

  • CC框架实践(3): 让jsBridge更优雅

    https://github.com/luckybilly/CC/wiki/CC框架实践(3): 让jsBridge更优雅


项目2:得到DDComponentForAndroid


地址:

https://github.com/luojilab/DDComponentForAndroid


一套完整有效的android组件化方案,支持组件的组件完全隔离、单独调试、集成调试、组件交互、UI跳转、动态加载卸载等功能。

相关学习材料:

  • 原理解释:Android彻底组件化方案实践

    https://www.jianshu.com/p/1b1d77f58e84

  • 设计思路:浅谈Android组件化

    https://mp.weixin.qq.com/s/RAOjrpie214w0byRndczmg

  • demo解读:Android彻底组件化demo发布

    https://www.jianshu.com/p/59822a7b2fad


项目3:ModularizationArchitecture


地址:

https://github.com/SpinyTech/ModularizationArchitecture


是Android平台上一种基于路由的多进程、组件化架构:它通过共有路由,在不引用其他模块的前提下,实现不同模块,不同进程之间的通信。它适合中型App架构的团队协作,并行开发,业务线解耦,白盒测试等场景。


相关学习资料:

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

    http://blog.spinytech.com/2016/12/28/android_modularization/

  • ModularizationArchitecture 使用教程

    http://blog.spinytech.com/2017/02/01/ma_get_start_cn/


项目4:阿里ARouter


地址:

https://github.com/alibaba/ARouter


Android平台中对页面、服务提供路由功能的中间件,我的目标是 —— 简单且够用。


相关学习资料:

  • 开源最佳实践:Android平台页面路由框架ARouter

    https://yq.aliyun.com/articles/71687


项目5:聚美组件化方案Demo
(基于聚美Router)


地址:

https://github.com/yjfnypeu/AndroidComponent


聚美Router地址:

https://github.com/JumeiRdGroup/Router


相关学习资料:

  • 聚美组件化实践之路

    https://juejin.im/post/5a4b4425518825128654eef4

  • Router:一款单品、组件化、插件化全支持的路由框架

    https://juejin.im/post/5a37771f6fb9a0450e7636e0


项目6:ActivityRouter


https://github.com/mzule/ActivityRouter


支持给Activity定义 URL,这样可以通过 URL 跳转到Activity,支持在浏览器以及 app 中跳入。


  • 通过 URL 打开 Activity

    http://t.cn/REbKrU6

  • ActivityRouter路由框架:通过注解实现URL打开Activity

    https://joyrun.github.io/2016/08/01/ActivityRouter/


其它比较有特色的组件化方案简介


51信用卡路由方案OkDeepLink


曾经在作者的github账号上开源,现已删除,作者在博文中提到后续2.0版会放到公司的github账号上,但一直未发布。 这里有个fork版本。


  • https://www.jianshu.com/p/8a3eeeaf01e8

  • https://github.com/jjerry/OkDeepLink


这个方案中使用aspectJ来实现路由表的自动注册,与其它方案不太一样,不过此方案的作者也打算废弃这种方式,理由是aspectJ还是太重了。


这个方案文章中还提到了关于路由安全的措施,其中有使用URL中加签名的方式来屏蔽非法访问,类似于客户端连接服务端的http请求对参数进行加密校验


组件总线方案ModuleBus


介绍文档:组件化开发跨module交互方式---ModuleBus交互


  • https://juejin.im/post/58524bd2b123db00655b4e99

  • https://github.com/cangwang/ModuleBus


这个方案的特别之处在于其借鉴了EventBus的思想,组件的注册/注销和组件调用的事件发送都跟EventBus类似。


美柚路由方案RouterKit


https://github.com/gybin02/RouterKit


这个方案的特别之处在于其组件自动注册的方案:通过apt生成每个module的路由表,然后复制到app的assets目录,运行的时候遍历asset目录,反射对应的activity。


https://github.com/luckybilly/AndroidComponentizeLibs

其它(欢迎给我提issue或pr补充!)


你有好的文章想和大家分享欢迎投稿,直接向我投递文章链接即可


最后,欢迎大家加入我们的知识星球,第二期开期起航火热进行中,已有近1000人加入学习

欢迎大家尽早加入,这期是到2019年3月10日结束,所以越早加入越好,现在一个星期加入入圈费用为79元,一个星期后每满100人费用增加10元~

微信扫描或者点击上方二维码领取Android\Python\AI\Java等高级进阶资源


更多学习资料点击下面的“阅读原文”获取

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值