爱奇艺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还是走全量下载新插件,优化网络下载流量。

linux系统怎么安装爱奇艺_爱奇艺插件化之Neptune相关推荐

  1. 在 RHEL 8.6 linux系统里安装达芬奇18.1软件缺少的依赖软件,需要下载安装。 20221111.

    在 RHEL 8.6 linux系统里安装达芬奇18.1软件缺少的依赖软件,需要下载安装. 20221111. RPM包下载安装:http://www.rpmfind.net/linux/rpm2ht ...

  2. windows配置gitlab秘钥并测试_你了解多少Linux系统GitLab安装与环境配置?

    Linux系统GitLab安装与环境配置 注意:虚拟机的内存至少2G以上 一. 从GitLab官网获取安装方法和步骤: https://about.gitlab.com/installation/#c ...

  3. jemter在linux上怎么安装_【JMeter之一】在linux系统下安装jmeter

    Apache JMeter是Apache组织开发的基于Java的压力测试工具,因此首先需要安装的是JDK 目前JMeter3.0需要的在JDK1.7及以上版本运行这是需要注意的一点 一.下载JDK 下 ...

  4. centos 卸载软件_一篇看懂!详解-Linux系统中安装软件的三种方法

    Linux系统中安装软件的三种方法 注:本文主要以CentOS为例介绍常用的安装方式,其他版本linux在文章底部 Linux系统中怎么安装软件,首先说一下应用程序与系统命令的区别: 1.文件位置 系 ...

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

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

  6. linux重装eclipse_如何在Linux系统上安装Eclipse

    如何在Linux系统上安装Eclipse 作为Java程序员,需要在Linux系统上安装Eclipse,很多人不知要如何安装,在安装Eclipse前,还需安装JDK,下面小编就给大家介绍下Linux如 ...

  7. Linux系统下安装rz/sz命令及使用说明(详解)

    Linux系统下安装rz/sz命令及使用说明(详解) 对于经常使用Linux系统的人员来说,少不了将本地的文件上传到服务器或者从服务器上下载文件到本地,rz / sz命令很方便的帮我们实现了这个功能, ...

  8. 关于内网linux系统如果安装nodejs,npm,express,mongodb,forever等

    内网的linux系统要安装nodejs以及express等系列的框架,因为系统是局域网和互联网是物理隔离的,所以,没法像官网的安装教程那样直接install了,只能手动安装,这里已经我们自己的linu ...

  9. linux源码安装浏览器,Linux系统手动安装Firefox浏览器

    大多数Linux发行版都以Firefox作为默认的浏览器,并可以轻松地从软件库中安装.例如: Debian/Ubuntu: sudo apt-get install firefox Fedora: s ...

  10. vm虚拟机下linux安装python_VM中安装linux系统,安装VS Code,搭建Python环境

    VM中安装linux系统 在linux系统中安装VSCode(Visual Studio Code) 1.从官网下载安装包 2.在下载目录打开终端安装 sudo dpkg -i code_1.32.3 ...

最新文章

  1. 一步一步搭建ELK日志处理集群(自己做过测试)
  2. SAP HANA数据库的搜索执行原理
  3. Asterisk 学习进阶 2
  4. 《C++Primer》复习——with C++11 [1]
  5. 什么是全场景AI计算框架MindSpore?
  6. 戴尔商台试机选购指南
  7. linux环境下配置虚拟主机域名
  8. 4-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇(远程升级WIFI内部程序)
  9. 在SqlServer2000的视图中小心使用*符号
  10. Robocode:下载安装及迁移至IntelliJ
  11. 小熊派开发板STM32L431_BearPi_LiteOS_E53_ST1调测GPS+2G心得(附代码修正版)
  12. [论文阅读] SASA: Semantics-Augmented Set Abstraction for Point-based 3D Object Detection
  13. SSL证书常见错误和解决办法
  14. 厦门市委书记走访图扑等多家软件企业调研元宇宙产业发展情况
  15. 这100 个网络基础知识,看完成半个网络高手
  16. 计算机学术论文shortessay,英语学术论文与研究方法-北京林业大学外语学院.doc
  17. 关于企业能源管控平台在轧钢行业能源管理中的应用
  18. 100个人检测一个,最少需要多少试管
  19. python openCv 入门学习-RGB转HSV、掩膜的简单理解(二)
  20. alpine linux apk删除,把玩Alpine linux(二):APK包管理器

热门文章

  1. 神州战神 z7m sl7 EFI 下载
  2. iphone外屏碎了多少钱_苹果6p外屏碎了多少钱【手机测评】
  3. 键盘不能打字输入的问题
  4. 工业无线路由器助力打造高速路多功能测速杆
  5. 共享单车计算机网络,基于BP神经网络的共享单车调度优化
  6. NIO中的Channel详解
  7. 基于JAVA共享充电宝管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
  8. 书单-《厨余堆肥DIY》
  9. Oracle数据库汉字占几个字节
  10. vue 前端配置按钮权限