0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一个可动态扩展的互动系统

张康康 2018-11-01 13:39 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者 | 移动Team景生善

整理 | 包包

背景

动态化作为移动端的一个重要技术分支,一直是大家积极探索的方向。目前移动端流行的动态化方案有,Facebook的React Native,阿里的Weex,它们都是采用了JavaScript与Native之间的桥接,使JavaScript开发的App拥有近似于原生应用的性能。

其他的一些动态化方案,像历史悠久的WaxPatch动态化方案,已经被App Store禁止的JSPatch,阿里的LuaView,腾讯的OCS,滴滴的DynamicCocoa。

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

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

LuaView设计原则

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


LuaView SDK整体架构(注:图片来自于《LuaView:基于Lua的移动端跨平台动态化方案》)

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

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

第三层有Lua虚拟机,脚本管理模块和安全控制模块。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的移动端跨平台动态化方案》)

简单易用

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

OSLua

OSLua是一款针对视频的互动娱乐的SDK,添加到视频系统中,给视频赋能,既可以增加视频的收入,也可以增加视频的娱乐性。OSLua SDK是在LuaView SDK的基础上,扩展了VP UI和VP Non-UI,以及添加了视频互动娱乐模块。OSLua使用LuaView的动态化,可以动态的添加新的互动娱乐模块,以及修改现有的互动娱乐模块。

1540890835599bff5ee5515


OSLua整体架构

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

154089083588493a8e5688b


OSLua运行流程

模板

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

1540890835603985aa9f442


OSLua模板参数

后续

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

参考

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

2. React Native中文网

3. Weex

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

5. 滴滴iOS 动态化方案DynamicCocoa 的诞生与起航


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 移动端
    +关注

    关注

    0

    文章

    43

    浏览量

    4699
  • 系统
    +关注

    关注

    1

    文章

    1043

    浏览量

    22181
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于Moku的功率器件动态参数测试系统:精准、高效、经济的体化测试方案

    摘要随着SiC、GaN等新型功率器件的广泛应用,功率器件动态参数测试对系统响应速度、同步精度和灵活性提出了更高要求。本文基于LiquidInstruments的Moku平台,提出
    的头像 发表于 10-31 14:09 229次阅读
    基于Moku的功率器件<b class='flag-5'>动态</b>参数测试<b class='flag-5'>系统</b>:精准、高效、经济的<b class='flag-5'>一</b>体化测试方案

    RESTful API设计原则: 构建易用、扩展的API接口。

    响应是否缓存 分层系统(Layered System):支持中间件扩展 按需代码(Code-On-Demand):可选扩展功能 实际案例:GitHub API严格遵循这些约束,其统
    的头像 发表于 10-24 10:45 281次阅读

    RVF单精度浮点指令集扩展介绍(1)

    RVF单精度浮点指令集寄存器扩展 RVF扩展了32独立的浮点通用寄存器,其中0号寄存器可变。 RVF扩展了1fcsr寄存器,存放
    发表于 10-22 06:04

    RESTful API设计原则: 构建易用、扩展的API接口

    (Representational State Transfer)架构原则,构建易用、扩展的API接口,帮助开发者创建经得起时间考验的服务。 、理解REST架构的核心约束 1.1 RESTful API的六大
    的头像 发表于 10-20 13:45 377次阅读

    SCH1633在动态调平系统中发挥的作用

    预定姿态的机电体化系统。简单来说,它就像“自动找平”的智能机器人。典型的
    的头像 发表于 09-19 12:01 492次阅读
    SCH1633在<b class='flag-5'>动态</b>调平<b class='flag-5'>系统</b>中发挥的作用

    电流功率检测USB3.0HUB,USB3.0扩展坞,扩展的USB2.0

    =73882cd30422e7942d630b1024b22055 、功能简介: 1转7的USB3.0 HUB(上行5G,1转7路USB3.0); 电流功率可视化(电流采样,功率计算,实时更新显示,并可上传电脑,后期可设计升级上位机); 通道电源独立可控(
    发表于 06-28 00:23

    Simcenter STAR-CCM+在燃烧学方面的应用:提供了可以高效、高保真进行燃烧仿真的迅速而扩展的化学求解器

    优势使用快速、扩展的化学求解器在更短时间内运行更多解决方案采用新型自动反应器网络方法,为燃烧室设计提供快速、精确的排放曲线确保高效、扩展的求解器充分利用计算资源使用模型特定的反应流
    的头像 发表于 06-27 17:11 545次阅读
    Simcenter STAR-CCM+在燃烧学方面的应用:提供了<b class='flag-5'>一</b><b class='flag-5'>个</b>可以高效、高保真进行燃烧仿真的迅速而<b class='flag-5'>可</b><b class='flag-5'>扩展</b>的化学求解器

    动态BGP与静态BGP的区别?

    :明确指定对等体,排错方便 不支持自动发现:每一个邻居都要手动添加 安全性较高:无动态邻居加入风险 扩展性差:当对等关系变多,配置工作繁琐 2.3 示例配置(Cisco 风格)bash 复制编辑
    发表于 06-24 06:57

    灵活且扩展系统电源管理集成电路PMIC DA9061-A数据手册

    造就了种高能效的系统解决方案,适用于信息娱乐、远程信息处理和高级驾驶辅助系统(ADAS)等应用领域。 *附件:灵活且扩展
    的头像 发表于 04-01 16:02 827次阅读
    灵活且<b class='flag-5'>可</b><b class='flag-5'>扩展</b>的<b class='flag-5'>系统</b>电源管理集成电路PMIC DA9061-A数据手册

    AR互动与传统的交互方式相比更加丰富多元

    AR 互动的另一个显著特点,是其丰富多元的互动方式。与传统的交互方式相比,AR 互动不再局限于鼠标、键盘、触摸屏等有限的输入方式,而是通过多种先进的技术手段,实现了更加自然、丰富的人机
    的头像 发表于 03-10 17:48 877次阅读
    AR<b class='flag-5'>互动</b>与传统的交互方式相比更加丰富多元

    未来展厅长啥样?全息展示柜、沙盘模型、互动设备、全息投影、数字展厅、中控系统一个都不能少!

    你是否想象过,未来的展厅会是什么样子?告别传统的静态展示,未来的展厅将是充满科技感与互动性的沉浸式空间。全息投影技术将带你穿越时空,沙盘模型将栩栩如生地呈现每一个细节,而智能中控
    的头像 发表于 03-08 14:38 779次阅读
    未来展厅长啥样?全息展示柜、沙盘模型、<b class='flag-5'>互动</b>设备、全息投影、数字展厅、中控<b class='flag-5'>系统</b>,<b class='flag-5'>一个</b>都不能少!

    Codima产品概览:构建扩展产品的核心架构

    信息。Toolbox 帮助用户使用可靠的设备数据轻松做出明智的决策。执行 Discovery 后,Toolbox 的所有方面都可以立即使用。 可大规模扩展 扩展性是 Codima
    的头像 发表于 02-13 09:19 439次阅读
    Codima产品概览:构建<b class='flag-5'>可</b><b class='flag-5'>扩展</b>产品的核心架构

    讯维高清互动教育录播系统:引领教育信息化新篇章!

    ,成为网上实时直播、点播的学习资源,供全校师生使用。这不仅方便了学生的学习,也使得优质教学资源得以共享,提高了教学质量。讯维高清互动教育录播系统作为行业内的佼佼者,以其独特的优势为教育信息化带来了新的突破。
    的头像 发表于 02-10 14:57 623次阅读

    开源项目!手把手教你制作互动式LED墙壁时钟!

    在这篇教程中,将教你使用Arduino创建互动式LED墙壁时钟。这个项目结合了创意和技术,设计出功能性强且视觉效果惊人的时钟,它配
    发表于 02-08 17:47

    扩展您的串口设备 EU104数据转发芯片独立设置通讯速率和参数 将1UART接口扩展为4

    扩展您的串口设备 EU104数据转发芯片独立设置通讯速率和参数 将1UART接口扩展为4 EU104是
    的头像 发表于 12-23 11:27 764次阅读