Video OS移动端架构说明

2018-11-27 17:20 [复制链接] 93 0

OS移动端简要架构说明
        
背景
在 TO B 的场景中,移动端会面临两个痛点:1,发布版本受合作平台方限制。2,新内容更新和发布,bugfix 等双方联调测试时间长。基于以上技术分析唯有较为完善的热更新方案可最大限度避免相关问题。调研了很多方案后,移动端决定引入脚本语言Lua作为构建整体公司移动端业务方案。
热更新
• 方案抉择
在目前移动行业内几大厂商有推出自己的热更新方案,来做到客户端不升级版本来做功能上线的策略,但基本分为以下几个技术方向:
(1)跨平台动态语言方案,利用js,lua, python 等脚本语言做native 功能的拓展,需要定义各个跨语言的bridge。
(2)利用JVM或者IOS 的Runtime 来做动态生成代码或动态修改代码后做代码注入。
其中第二点中动态代码注入或者生成需要我们能掌控app的启动等事件。作为我们做嵌入式功能的提供商不太适合。同时IOS的审核规则对于第二点会拒绝。
第一种方案中,较为成熟的代表方案有ReactNative,weex 等,大部分为js的方案,优点在于js的较好的跨平台性和支持动态发布。但是缺点在于js的解释器会比较大,同时可能对合作平台代码兼容性和侵入性比较大。所以在SDK的实现中不是最优方案。而Lua是一种轻量级的脚本语言,它的脚本解析器很小,编译出来只有100多kb,因此,作为一个内嵌的脚本解析器是首选的;而且Lua除了提供基本的脚本语言特性和系统功能外(IO读写),没有多余的功能性框(JS解析器因为要配合Web的功能实现带有很多的工具库),这也是它轻量的表现,故最后选择了Lua的技术解决方案。
• 方案优势
Lua的优势在此处得到体现,其优秀的跨平台能力,轻量的解释器在这里得到了很好的发挥,能有效                降低SDK包体大小。同时其也提供了丰富的C Api来让其它的语言对其功能进行扩展,能够真正做到按需定制方案执行。
同时Lua因为只是脚本解释器,在我们实际的运行中,Lua只是负责了动态的解释,大部分核心运行仍然是Android、IOS的Native代码。尤其是不同平台View的构建,这保持了C端很好的运行性能,对用户交互体验也没有伤害。
- 业务搭建
整个SDK目前可大致分为四层。整体架构图如下:   

1. 最底层是lua 解释器, 因为lua 其解释器基于C,故Android(java)利用LuaJ.vm(Lua官方推出的Lua在java平台的实现) 框架进行代理。OC上是LuaC(Lua 官方推出的lua在C平台的实现)。
图片1.png


2. 数据库层,数据层和业务层为我们根据V++业务做的通用技术模块。我们采用了常见的app架构模式,在整体结构中实现了常见的网络,请求,长链,UI等模块的基础框架。同时拓展了用户行为统计模块,webview 业务定制模块等跟实际业务关联性较强的功能。在SDK环境中我们主要用到了3种存储方式来做数据保存,其中sqlite 作为Android,IOS 自带的关系型数据库,主要用在了日志收集模块。轻量级的存储例如:Android的sharedprefences 和IOS的NSCahce,主要存储需要长久保存的数据模型,例如:版本记录。而File 存储,主要用于lua脚本的更新,持久化的资源等。
3. 展示层为我们串联我们平台层和lua执行层的核心。在Lua的运行过程中bridge是至关重要的支撑层,bridge是lua api与android 或者IOS运行的通道,所有的native class, method 都可以通过brdige 代理形成lua的可调用api。此为lua脚本执行解释,实际上是native代码构建提供了可能。在Lua的bridge中我们代理了例如如下几种类型:
原生method : md5, encode, decode等
原生控件 : ImageView, TextView,Webview等
原生class :HTTP 请求封装类,MQTT功能封装类 等
4. 前端UI层为LuaView 和NativeView的协作层,各模块组件支持通过Router规则进行交互。其中LuaView 与NativeView 是共存的,特别是一些特别复杂,定制性高的View 在已有bridge难以支持通过Lua实现的时候,我们可以定义好NativeView 然后将NativeView 通过Bridge 桥接给Lua,形成Lua里面的API。这一点为我们持续拓展LuaView api提供了可能。同时也能很好的响应业务的特殊需求。



OS移动架构说明.docx (54.59 KB, 下载次数: 0)
使用道具 举报 只看该作者 回复
最新评论 | 正序浏览
只看楼主|楼层直达:
*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|站点地图|Video++ ( 沪ICP备14042830-6号

Powered by video++

快速回复 返回顶部 返回列表