linux怎么查看本机内存大小
325
2022-11-17
一个可动态扩展的互动系统
整理 | 包包
背景
其他的一些动态化方案,像历史悠久的WaxPatch动态化方案,已经被App Store禁止的JSPatch,阿里的LuaView,腾讯的OCS,滴滴的DynamicCocoa。
但是Facebook的React Native和阿里的Weex接入以后会显著增加App包的大小,还有环境搭建问题,不适合SDK的开发,只适合App开发。
通过对比几种动态化方案,最后选择阿里的LuaView方案来实现平台的SDK。LuaView是由lua与Native控件之间的桥接来实现的,相对于其他解决方案来说,是一个轻量级的解决方案。而且Lua语言可扩展性强、简单、高效、占用体积小、启动速度快、学习简单等诸多优势,有着许多成功案例,是动态化方案首选。
LuaView设计原则
LuaView SDK整体架构(注:图片来自于《LuaView:基于Lua的移动端跨平台动态化方案》)
如图,LuaView SDK的整体架构可以表示为五层。
第三层有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整体架构
OSLua首先会对比本地版本和服务器版本,若是两个版本不一致,将服务器版本更新到本地,并写入本地文件Cache中。在系统运行互动娱乐模块时,LuaCore按照模板的文件名,在文件Cache中查找,找到脚本文件以后,即可加载运行脚本文件,展示具体的互动类型。具体的流程如下:
OSLua运行流程
模板
OSLua模板参数
后续
OS Lua还在不断完善,丰富Native到Lua的桥接,以及增加新的互动娱乐模板,最终将会发展为一个性能稳定,功能丰富的视频增值SDK。
参考
1. LuaView:基于Lua的移动端跨平台动态化方案
2. React Native中文网
3. Weex
4. OCS ——史上最疯狂的iOS 动态化方案
5. 滴滴iOS 动态化方案DynamicCocoa 的诞生与起航
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~