Andromeda —— 适用于多进程架构的组件通信框架

2018 年 7 月 13 日 开源中国


Apache

Java

Android

爱奇艺

bettar

Android 的组件化由来已久,已经生产了一些不错的方案,尤其是在页面跳转这方面,阿里的 ARouter、 天猫的统跳协议、 Airbnb 的 DeepLinkDispatch, 借助注解来完成页面的注册,巧妙地实现了路由跳转。


尽管 ARouter 等方案也支持接口的路由,但单进程的接口路由已经无法满足日益复杂业务需求。在很多移动端应用中,既有单进程的通信需求,也有跨进程的通信需求,并且还要支持跨进程通信中的Callback调用,以及全局的事件总线。


爱奇艺 Andromeda 框架,不仅满足以上需求,而且还在此基础上做到了整个进程间通信的阻塞式调用,让异步连接代码更优雅。


Andromeda 的功能


Andromeda 是爱奇艺开源的一个 Android 平台上轻量级的组件间通信框架,目前主要包含以下功能:


  • 本地服务路由,注册本地服务是 registerLocalService(Class, Object), 获取本地服务是 getLocalService(Class);

  • 远程服务路由,注册远程服务是 registerRemoteService(Class, Object), 获取远程服务是 getRemoteService(Class);

  • 全局(含所有进程)事件总线, 订阅事件为 subscribe(String, EventListener), 发布事件为 publish(Event);

  • 远程方法回调,如果某个业务接口需要远程回调,可以在定义 aidl 接口时使用 IPCCallback;


注: 这里的服务不是 Android 中四大组件的 Service,而是指提供的接口与实现。为了表示区分,后面的服务均是这个含义,而 Service 则是指 Android 中的组件。


这里为什么需要区分本地服务和远程服务呢?


最重要的一个原因是本地服务的参数和返回值类型不受限制,而远程服务则受 binder 通信的限制。可以说,Andromeda 的出现为组件化完成了最后一块拼图。





Andromeda 和其他组件间通信方案的对比


接入方式


首先在 buildscript 中添加 classpath (以 1.0.0 为例):


classpath "org.qiyi.video.svg:core:1.0.0"

classpath "org.qiyi.video.svg:plugin:1.0.0"


这两个分别是核心代码库和 gradle 插件库的路径。 在 Application 或 library Module 中使用核心库:


implementation 'org.qiyi.video.svg:core:1.0.0'


在 Application Module 中使用 gradle 插件:


apply plugin: 'org.qiyi.svg.plugin'



在 Andromeda 之前,可能是由于业务场景不够复杂的原因,绝大多数通信框架都要么没有涉及 IPC 问题,要么解决方案不优雅,而 Andromeda 的意义在于同时融合了本地通信和远程通信,完整地解决了组件通信的问题。


目前Andromeda 框架已经开源,源码获取:



本次杭州源创会,我们还特别邀请了 Andromeda 的作者、爱奇艺架构师——王海龙,为我们介绍 Android 组件化框架的发展和使用,以及适用于多进程架构的组件通信框架 Andromeda。


除此之外,我们 2018 年 7 月 21 日(周六)的杭州源创会 —— 移动开发专场还邀请了:



  • 阿里国际UED高级前端技术专家——辟蹊



  • 即构科技资深架构师——冼牛



  • 个推 Android 高级研发工程师——李子洋



  • 钉钉开放平台高级技术专家——莘舟



五位行业大牛齐聚,以移动开发为核心,与你一起分享交流,进行一场关于面对面的技术对话。



扫码报名,与业内大咖和更多小伙伴当面交流。






开源中国征稿开始啦!


开源中国 www.oschina.net 是目前备受关注、具有强大影响力的开源技术社区,拥有超过 200 万的开源技术精英。我们传播开源的理念,推广开源项目,为 IT 开发者提供一个发现、使用、并交流开源技术的平台。


现在我们开始对外征稿啦!如果你有优秀的技术文章想要分享,热点的行业资讯需要报道等等,欢迎联系开源中国进行投稿。投稿详情及联系方式请参见:我要投稿



推荐阅读

Python 超越 Java 并逐渐拉开差距 | PYPL 指数榜

颠覆网站 C/S 模式,没有服务器的网站会带来什么变革?

为什么 Windows 7 会成为 Windows 10 最大的敌人?

RSS 之父 Winer 炮轰 Google 反客为主强推 HTTPS

SUSE Linux 再次易主!以 25 亿美元被 EQT 收购

点击“阅读原文”查看更多精彩内容

登录查看更多
1

相关内容

Andromeda 是Google在2016年10月4日发布的融合了Android与ChromeOS的操作系统。
【IJCAI2020-华为诺亚】面向深度强化学习的策略迁移框架
专知会员服务
25+阅读 · 2020年5月25日
华为发布《自动驾驶网络解决方案白皮书》
专知会员服务
122+阅读 · 2020年5月22日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
229+阅读 · 2020年5月21日
【SIGMOD2020-腾讯】Web规模本体可扩展构建
专知会员服务
29+阅读 · 2020年4月12日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
94+阅读 · 2019年12月4日
TensorFlow 2.0 学习资源汇总
专知会员服务
66+阅读 · 2019年10月9日
滴滴离线索引快速构建FastIndex架构实践
InfoQ
21+阅读 · 2020年3月19日
用Now轻松部署无服务器Node应用程序
前端之巅
16+阅读 · 2019年6月19日
美团:基于跨平台框架Flutter的动态化平台建设
前端之巅
14+阅读 · 2019年6月17日
工行基于MySQL构建分布式架构的转型之路
炼数成金订阅号
15+阅读 · 2019年5月16日
浅谈 Kubernetes 在生产环境中的架构
DevOps时代
11+阅读 · 2019年5月8日
数据库之架构:主备+分库?主从+读写分离?
架构文摘
8+阅读 · 2019年4月23日
车路协同构建“通信+计算”新体系
智能交通技术
11+阅读 · 2019年3月26日
Perseus(擎天):统一深度学习分布式通信框架
云栖社区
4+阅读 · 2019年3月10日
开源巨献:阿里巴巴最热门29款开源项目
算法与数据结构
5+阅读 · 2017年7月14日
Seeing What a GAN Cannot Generate
Arxiv
7+阅读 · 2019年10月24日
Factor Graph Attention
Arxiv
6+阅读 · 2019年4月11日
Self-Driving Cars: A Survey
Arxiv
41+阅读 · 2019年1月14日
Exploring Visual Relationship for Image Captioning
Arxiv
14+阅读 · 2018年9月19日
Learning Blind Video Temporal Consistency
Arxiv
3+阅读 · 2018年8月1日
Arxiv
6+阅读 · 2018年2月24日
Arxiv
4+阅读 · 2016年12月29日
VIP会员
相关VIP内容
【IJCAI2020-华为诺亚】面向深度强化学习的策略迁移框架
专知会员服务
25+阅读 · 2020年5月25日
华为发布《自动驾驶网络解决方案白皮书》
专知会员服务
122+阅读 · 2020年5月22日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
229+阅读 · 2020年5月21日
【SIGMOD2020-腾讯】Web规模本体可扩展构建
专知会员服务
29+阅读 · 2020年4月12日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
94+阅读 · 2019年12月4日
TensorFlow 2.0 学习资源汇总
专知会员服务
66+阅读 · 2019年10月9日
相关资讯
滴滴离线索引快速构建FastIndex架构实践
InfoQ
21+阅读 · 2020年3月19日
用Now轻松部署无服务器Node应用程序
前端之巅
16+阅读 · 2019年6月19日
美团:基于跨平台框架Flutter的动态化平台建设
前端之巅
14+阅读 · 2019年6月17日
工行基于MySQL构建分布式架构的转型之路
炼数成金订阅号
15+阅读 · 2019年5月16日
浅谈 Kubernetes 在生产环境中的架构
DevOps时代
11+阅读 · 2019年5月8日
数据库之架构:主备+分库?主从+读写分离?
架构文摘
8+阅读 · 2019年4月23日
车路协同构建“通信+计算”新体系
智能交通技术
11+阅读 · 2019年3月26日
Perseus(擎天):统一深度学习分布式通信框架
云栖社区
4+阅读 · 2019年3月10日
开源巨献:阿里巴巴最热门29款开源项目
算法与数据结构
5+阅读 · 2017年7月14日
相关论文
Seeing What a GAN Cannot Generate
Arxiv
7+阅读 · 2019年10月24日
Factor Graph Attention
Arxiv
6+阅读 · 2019年4月11日
Self-Driving Cars: A Survey
Arxiv
41+阅读 · 2019年1月14日
Exploring Visual Relationship for Image Captioning
Arxiv
14+阅读 · 2018年9月19日
Learning Blind Video Temporal Consistency
Arxiv
3+阅读 · 2018年8月1日
Arxiv
6+阅读 · 2018年2月24日
Arxiv
4+阅读 · 2016年12月29日
Top
微信扫码咨询专知VIP会员