2019独角兽企业重金招聘Python工程师标准>>>

爱奇艺APP从2013年就开始了插件化技术的研究和改造,截止目前一共有20多个独立业务模块以插件化的方式运行和并行迭代,其中包括APP首页的奇秀、文学、电影票、漫画等业务。开发插件化框架的Demo并不是很难,但是要开发一款完善的插件化框架,兼容适配国产各种碎片化的ROM,同时满足业务需求,却不是那么容易。插件框架的稳定性和兼容性,从原有代码模块解耦到插件化的迁移成本、后期维护成本等方面都需要考虑到。本文将介绍插件化实现的技术原理,分享爱奇艺APP在插件化实践过程的解决方案。

Neptune是爱奇艺移动端研发的一套灵活,稳定,轻量级的插件化解决方案。经过不断的研发,迭代和线上验证,目前已经完全适配了Android P,能够在数亿的设备上动态加载和运行插件APK,为爱奇艺众多的垂直业务团队提供了稳定的服务。


在Neptune框架之上,爱奇艺APP针对插件业务,实现了一套完备的插件管理方案,负责插件的下载,安装,升级,版本管理,插件启动控制,插件与宿主之间的通信。由于这部分涉及具体APP业务的交互形态,且与后端数据结构关联,因此没有开源。

这里简单介绍下设计思路。对于每一个插件版本数据,在APP层是一个OnLineInstance实例,里面字段与后端数据结构保持一致,包含基本的插件包名,插件版本,插件依赖,还包含一些下载控制策略,patch升级策略等。APP层的OnLineInstance,对应于Neptune框架的PluginLiteInfo。由于一些插件可能会来自不同的地方或者配置不同的版本,如内置插件,本地缓存的旧版本插件,线上最新插件。因此在APP层一个插件业务会关联多个OnLineInstance,我们会选择最高版本的兼容插件进行升级,安装。

插件包体积越大,下载成功率和转化率越低,为了提高插件升级的覆盖率和成功率,我们采用了增量更新的机制。插件后台更新插件时,后台会基于历史版本插件生成增量的diff包。APP端在请求插件数据时,后端接口额外返回增量patch的url及生成patch所有的base插件版本。前端根据本地已安装插件的版本,选择使用patch增量合成新版本插件apk还是走全量下载新插件,优化网络下载流量。

转载于:https://my.oschina.net/u/3008585/blog/2223120

爱奇艺插件化之Neptune相关推荐

  1. linux系统怎么安装爱奇艺_爱奇艺插件化之Neptune

    爱奇艺APP从2013年就开始了插件化技术的研究和改造,截止目前一共有20多个独立业务模块以插件化的方式运行和并行迭代,其中包括APP首页的奇秀.文学.电影票.漫画等业务.开发插件化框架的Demo并不 ...

  2. 爱奇艺视频有哪些插件?爱奇艺插件怎么卸载

    是不是觉得爱奇艺视频占空间大,但是又不想卸载?是不是觉得爱奇艺有很多插件,那么怎么卸载爱奇艺插件呢?流星告诉你: 1.首先打开手机爱奇艺视频,然后在通知栏下方找到[我的]按钮,如图所示: 爱奇艺201 ...

  3. 爱奇艺App架构升级之路——64位适配探索与实践

    背  景 随着手机硬件的不断发展,近两年的新式手机已经全部采用了64位CPU,64位真的比32位快吗?实际上32位和64位的差异主要体现在内存寻址上,32位最高只支撑4GB内存,而64位则能够最高支撑 ...

  4. 爱奇艺开源轻量级插件化方案 Neptune

    爱奇艺近日开源了其轻量级插件化方案 Neptune,项目地址:https://github.com/iqiyi/Neptune 插件化框架可以在主程序不重新安装的情况下,针对单个业务模块进行动态加载达 ...

  5. 爱奇艺APP的自动化录制回放系统 全云化处理新体验

    在面对大量的APP功能用例回归测试的时候,测试开发工程师最头痛的问题之一便是新功能交付时间紧迫,原有功能回归测试耗时长,自动化脚本都没时间跟进补齐测试用例.导致核心功能回归遗漏,新功能测试质量也得不到 ...

  6. 爱奇艺知识移动端组件化探索和实践

    前言 组件化对于任何一个业务场景复杂的APP以及经过多次迭代之后的产品来说都是必经之路,组件化是指解耦复杂系统时将多个功能模块拆分.重组的过程.组件化要做的不仅仅是表面上看到的模块拆分解耦,其背后还有 ...

  7. 得到、微信、美团、爱奇艺APP组件化架构实践

    一.背景 随着项目逐渐扩展,业务功能越来越多,代码量越来越多,开发人员数量也越来越多.此过程中,你是否有过以下烦恼? 项目模块多且复杂,编译一次要5分钟甚至10分钟?太慢不能忍? 改了一行代码 或只调 ...

  8. 腾讯技术团队人手一份的Android组件化实战笔记(含得到、微信、美团、爱奇艺APP架构项目及源码)

    前言 以前的Android开发大多用的中心化管理思想,将相同的资源集中进行管理.随着项目的发展,弊端渐显:集中管理的资源越来越多,多人开发也越来越麻烦,时常牵一发而动全身. 尤其是在大公司或者是大项目 ...

  9. 爱奇艺大数据生态的实时化建设

    简介:实时化是大数据未来最重要的方向之一. 作者|爱奇艺大数据团队 数据作为互联网时代的基础生产资料,在各大公司企业拥有举足轻重的地位.数据的价值在互联网公司的体现,大致而言可以分成三类: 发掘数据中 ...

最新文章

  1. 自定义算子高性能开发
  2. sql server密码过期,通过SSMS修改策略报错
  3. poj 3984
  4. python框架 mysql数据库_在Python的框架中为MySQL实现restful接口的教程
  5. Codeforces Round #552 (Div. 3)D、E题解
  6. 日期型转json格式(springboot)
  7. 由于启动用户实例的进程时出错,导致无法生成 SQL Server 的用户实例。该连接将关闭...
  8. parallels desktop 缺少组件_德国警方扣留光伏组件盗贼
  9. Delphi通过管道执行外部命令行程序(cmd)并获取返回结果
  10. PCL综合开发(一):Qt 5.14 + PCL 1.8.1 +VS 2017环境配置
  11. 数据字典模块设计_使用正则表达式采集整站小说数据小说精品屋爬虫模块的设计与实现...
  12. c语言中rcu缩写,ICU、MICU、EICU、NICU、NCU、CCU、RCU,科室英文缩写大全
  13. 【软件加密】python制作一个超强的加密软件
  14. c语言读写txt坐标文件数据,用c语言读写sgy格式的地震数据文件.pdf
  15. 用Unity3D实现打飞碟游戏
  16. JavaScript数组filter方法
  17. 基于美国人口数据分析
  18. linux编辑文本到最后一行,linux编辑文本(vim)时跳转到最后一行和第一行及相关指令...
  19. 英文论文写作摘要的时态和语态
  20. Fiddler抓包工具保姆级使用教程(超详细)

热门文章

  1. android4.4 ssl版本查看,在Android 4.4中启用TLS 1.2
  2. GPD P2MAX用gibMacOS图文安装黑苹果
  3. 实测!华为鸿蒙比 Android系统快60%!
  4. 谷歌如何应对鸿蒙系统,应对华为鸿蒙,谷歌新系统呼之欲出,安卓真命不久矣?...
  5. 【游戏客户端】实现卡牌翻转效果
  6. 例题4-1 古老的密码
  7. 12306网站订票详细攻略
  8. 让你设计12306网站
  9. 调用阿里云接口一键实现人像动漫化
  10. 手机号码、验证码的处理