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

    文章

    38

    浏览量

    4298
  • 系统
    +关注

    关注

    1

    文章

    981

    浏览量

    21036
收藏 人收藏

    评论

    相关推荐

    款基于ESP32的情侣互动小电视,如何含蓄地告诉你对象你想她了?

    都说工程师里面直男多,但工程师浪漫起来就没小鲜肉什么事儿了。今天社长带来的是款基于ESP32的情侣互动小电视:具备天气时钟、恋爱纪念日及情话显示、想你啦互动等功能(天知道单身狗社长抱着怎样的心情
    发表于 03-28 09:27

    求助:请教动态称重问题

    开发了动态称重产品,在线使用的时候,精度比较差,始终找不到问题在哪里,有没有开发过动态称重的高手指点下。有偿!
    发表于 03-14 11:26

    Double 4 VR智能互动系统

    随着科技的不断发展,教育领域也在不断地进行创新和改革。其中,VR(虚拟现实)技术的引入,为轨道交通实训教学带来了全新的可能性。**Double 4 VR智能互动系统基于多项前沿技术,为轨道交通
    的头像 发表于 11-21 10:33 205次阅读

    Linux下动态库相关知识

    Linux 下有动态库和静态库,动态库以.so为扩展名,静态库以.a为扩展名。二者都使用广泛。本文主要讲动态库方面知识。
    的头像 发表于 11-07 09:23 291次阅读
    Linux下<b class='flag-5'>动态</b>库相关知识

    怎么评估运动控制系统动态响应速度?

    通常用什么办法来评估运动控制系统动态响应速度
    发表于 10-13 07:12

    扩展性对物联网管理系统有哪些影响?

    扩展性对于物联网管理系统的设计和开发非常重要,它直接影响着系统的性能、可靠性和能耗等方面,是评估一个系统优劣的重要因素之一。可扩展性对物联
    的头像 发表于 09-19 11:23 324次阅读

    IO扩展模块有哪些特点

    ,旨在深入了解这关键设备在工业生产中的作用。  多样化的功能应用  IO扩展模块的显著特点是其多样化的功能应用。这些模块能够实现数字输入(DI)、数字输出(DO)、模拟输入(AI
    发表于 08-31 18:14

    ARM编译器扩展矢量扩展用户指南

    ARM编译器工具链支持为ARMv8-A AArch64实现伸缩向量扩展(SVE)EAC(00rel1)的目标。 SVE是针对AArch64的下代SIMD指令集,它为高性能计算(HPC)引入了以下
    发表于 08-16 06:51

    Arm AArch64体系结构的扩展矢量扩展指南

    本指南简要介绍Arm AArch64体系结构的扩展矢量扩展(SVE)。在本指南中,您可以了解SVE的概念和主要功能,SVE的应用领域,以及SVE与Neon的比较。我们还描述了如何为支持SVE的目标开发程序
    发表于 08-10 06:43

    Arm编译器扩展矢量扩展用户指导

    Arm编译器工具链支持实现伸缩矢量扩展(SVE)EAC的目标(00rel2)用于Armv8‑A AArch64。 SVE是AArch64的SIMD指令集,它为High引入了以下体系结构特征性能计算
    发表于 08-08 06:34

    Arm的领域管理扩展(RME)介绍

    本指南介绍了领域管理扩展(RME),这是该体系结构的扩展。 RME是Arm机密计算架构(Arm CCA)的硬件组件还包括软件元素。RME动态地将资源和内存传输到
    发表于 08-02 11:40

    什么是LED智能互动地砖屏?

    什么是LED智能互动地砖屏? LED智能互动地砖屏是专为地面显示而打造的一款创新商显产品,配合智能系统,实现人屏互动、趣味游戏等多重效果,使得舞台空间延伸、并实现光影
    的头像 发表于 07-21 10:44 1402次阅读

    使用DS1863/DS1865的内部校准和右移位(可扩展动态范围)增强ADC性能

    这篇应用笔记讨论了使用DS1863/D1865控制器/监控器芯片的内部校准和右移位(可扩展动态范围)改善系统性能的方式。该文描述了如何实现内部校准和右移位,并通过一个实例阐述整个过程。
    的头像 发表于 06-16 14:36 500次阅读
    使用DS1863/DS1865的内部校准和右移位(可<b class='flag-5'>扩展</b><b class='flag-5'>动态</b>范围)增强ADC性能

    DS1856内部校准和右移(可扩展动态量程)

    DS1856采用内部校准和右移(可扩展动态量程)来增强内置的12位ADC。这使得DS1856具有16位ADC的精度和准确度,而不会增加尺寸和成本。此外,该器件的可编程增益和失调功能可以减少甚至消除对外部信号调理电路的需求。校准后,这些功能将模拟输入信号转换为数字值,而无需
    的头像 发表于 06-13 16:32 266次阅读
    DS1856内部校准和右移(可<b class='flag-5'>扩展</b><b class='flag-5'>动态</b>量程)

    LSPZ2000-正弦动态压力传感器测试系统

    系统概述:LSPZ2000-正弦动态压力传感器测试系统实现固定频率段压力校准测试,还可实现定范围内的扫频压力校准测试,有利于帮助用户分析
    发表于 05-26 16:47