移动端动态方案--VideoOS技术选择及具体实施

背景

动态化作为移动端的一个重要技术分支,一直是大家积极探索的方向。目前移动端流行的动态化方案,按技术方向分为以下两种:

- 跨平台动态语言方案,利用js,lua等脚本语言做native功能的拓展,需要定义各个跨语言的bridge。代表性的方案有Facebook的React Native,阿里的Weex,它们都是采用了JavaScript与Native之间的桥接,使JavaScript开发的App拥有近似于原生应用的性能。

- 利用JVM或者iOS的Runtime来做动态生成代码或动态修改代码后做代码注入。代表性的方案有已经被App Store禁止的JSPatch

但是Facebook的React Native和阿里的Weex接入以后会显著增加App包的大小,还有环境搭建问题,不适合SDK的开发,只适合App开发。

通过对比几种动态化方案,最后选择阿里的LuaView方案来实现平台的SDK。LuaView是由lua与Native控件之间的桥接来实现的,相对于其他解决方案来说,是一个轻量级的解决方案。而且Lua语言可扩展性强、简单、高效、占用体积小、启动速度快、学习简单等诸多优势,有着许多成功案例,是动态化方案首选。

 LuaView设计原则

LuaView以UI视图构建能力为基础,实现了原生Native UI桥接到Lua Api,使用Lua脚本语言开发应用功能,同时能够达到原生应用的性能和效果。


LuaView SDK整体架构

如图,LuaView SDK的整体架构可以表示为四层。

第一、二层依次是OS层和Framework层,分别代表了Android、iOS以及对应的系统框架层。

第三层有Lua虚拟机,脚本管理模块,安全控制模块和核心Lib库。Android使用的是LuaJ虚拟机,iOS使用的是LuaC虚拟机,这两个虚拟机都是目前两种语言中用的最广泛,最稳定的虚拟机。脚本管理模块负责Lua脚本的管理,包括脚本的解包、验证、加解密、解压缩等工作。安全控制模块负责Lua脚本的安全校验工作,包括脚本完整性校验和脚本安全校验等。LuaView的核心Lib库,包括Lua UI Lib(主要是所有的UI组件,如View、Button、Label、Image等)和Lua Non-UI Lib(主要包括Network、Json、Gesture)。

最上层是Lua业务脚本以及Lua层的lib库。

LuaView的两个重要的设计原则

两端一致性

>LuaView的一条重要设计原则就是iOS和Android两端逻辑只写一份代码,API设计的时候考虑了两端的共性,对于两端不同的地方,则由Native部分实现。现在,LuaView SDK中Lua API基本完成两端接口的统一,保证API一致性,同一份脚本在两端运行的结果也是相同的。

简单易用

>LuaView的另一个设计原则是保持Lua语言的简单和易用。在核心UI库上,所有的API做到精简,尽量使用脚本实现避免使用Native实现。所有API使用Lua原生语法,并且两端的接口保持一致风格,方便开发。

VideoOS

VideoOS是一款针对视频的互动娱乐系统,添加到视频系统中,给视频赋能,既可以增加视频的收入,也可以增加视频的娱乐性。

VideoOS整体架构

VideoOS移动端是在LuaView SDK的基础上,扩展了VP UI和VP Non-UI,以及添加了视频互动娱乐模块。VideoOS移动端使用LuaView的动态化,可以动态的添加新的互动娱乐模块,以及修改现有的互动娱乐模块。


VideoOS移动端架构

VideoOS首先会对比本地版本和服务器版本,若是两个版本不一致,将服务器版本更新到本地,并写入本地文件Cache中。在系统运行互动娱乐模块时,LuaCore按照模板的文件名,在文件Cache中查找,找到脚本文件以后,即可加载运行脚本文件,展示具体的互动类型。具体的流程如下:


VideoOS移动端运行流程

应用

VideoOS中所有互动娱乐应用,如云图、中插、气泡、投票等,都是采用统一的策略,将应用的共有属性抽像为相同的参数,差异化的内容,则在应用中自己处理。这样客户端收到投递的广告时,将统一处理应用数据,按照应用数据时间,展示应用,控制应用展示的频次,在这个阶段系统并不知道处理的是哪个应用。应用展示时,根据应用数据展示具体的应用效果,所有的差异化的内容都在这个阶段处理。同时,将应用中的各种事件,如展示、点击、关闭等,还有需要对接平台处理的操作,抽象为统一的参数,这样所有的应用都有一样的事件处理机制。以上的这些特性,可以极大的增加系统的扩展性,如果系统需要新的应用,只需要按照上面的策略,统一添加投递和事件处理的参数,实现特异化的内容,就可以添加到系统中了。


VideoOS应用参数

现在VideoOS已经完成云图、中插、气泡、投票、卡牌、红包等应用供用户使用。

后续

VideoOS还在不断完善,丰富Native到Lua的桥接,以及增加新的互动娱乐应用,最终将会发展为一个性能稳定,功能丰富的视频增值系统。

参考

1.VideoOS

2. LuaView:基于Lua的移动端跨平台动态化方案

3. React Native中文网

4. Weex

5. OCS ——史上最疯狂的 iOS 动态化方案

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,992评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,212评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,535评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,197评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,310评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,383评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,409评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,191评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,621评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,910评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,084评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,763评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,403评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,083评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,318评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,946评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,967评论 2 351

推荐阅读更多精彩内容

  • 近几年来,在全国十数所高校的翻译论坛、研讨会以及工作坊讲过计算机辅助翻译(CAT),限于时间,好多背后的故事没有展...
    binich阅读 5,071评论 1 4
  • 微风拂过头顶,走在浪漫的小道,寻着生命的气息。人行道上蹦跳着的学生虽然穿着陌生的校服,熟悉的却是脸上洋溢着...
    拾逝阅读 378评论 0 0