1、快快应应用用框框架架在在 I IO OT T 场场景景中中的的落落地地彭彭耀耀宗宗小米集团 高级软件研发工程师2021年加入小米从事 VELA 快应用框架研发彭彭耀耀宗宗0 01 1X Xi ia ao ommi i V Ve el la a 快快应应用用框框架架简简介介安安全全性性差差传统 IOT 的 Flat Address Mode 允许应用访问整个地址空间,缺乏隔离性和安全性,难以对应用的行为做限制。缺缺少少模模块块化化机机制制整体以系统固件的形式发布,应用更新需要 OTA升级整个固件,无法实现应用独立分发和更新。开开发发难难度度高高传统 C 开发需要针对不同的芯片厂商配置不同的编译器
2、和开发环境。整体开发流程复杂繁琐,难以触达三方开发者。传传统统 I IO OT T 开开发发的的局局限限性性提提供供应应用用容容器器嵌入式业务场景需要应用容器提供安全性和隔离性,解决应用分发和应用兼容性问题。丰丰富富的的生生态态依托现有的快应用标准和繁荣前端开发生态,便于开发者接入和整个应用生态的构建。高高效效开开发发相较于传统的 IOT 场景中以 C 为主的开发方式,框架提供的前端开发体验具有无与伦比的效率优势。前前端端框框架架落落地地 I IO OT T 的的技技术术价价值值嵌入式 IOT 领域需要应用容器技术来克服其固有的局限,前端技术在这个方向大有可为。X Xi ia ao ommi
3、i V Ve el la a 快快应应用用框框架架架架构构架架构构说说明明 JS 运行时解析应用逻辑。C+层维护 VDOM 树,实现渲染。自研的嵌入式渲染引擎,支持高效的 UI 渲染,矢量字体绘制和丰富的动效。数据和 UI 实现响应式绑定。C+层向 JS 层暴露设备特性API。各各种种 I IO OT T 设设备备应应用用J JS SR Ru un nt ti imme eMVVM生命周期Interface路由插件J JS S E En ng gi in ne eA Ap pp p C Co on nt ta ai in ne er rBasic事件机制VDOM TreeFeaturesMod
4、ules.Widget GUI WrapperWidget TreeLayout Tree动画引擎矢量字体图形加速引擎l li ib bU UV V A As sy yn nc c I IO O L LI Ib br ra ar ry yX Xi ia ao ommi i V Ve el la a O OS SV Ve el la a 快快应应用用框框架架渲渲染染实实现现响响应应式式渲渲染染流流程程 使用自研的 toolkit 编译器将用户的应用源码转换成可供框架直接加载的格式。运行时通过 JS 引擎执行 JS 代码来驱动逻辑,JS 通过 Native 注入的接口操作并生成 VDOM 树。VD
5、OM 树信息最终会传递到渲染器并生成对应的Widget Tree,完成最终渲染。0 02 2快快应应用用框框架架落落地地实实践践落落地地产产品品X Xi ia ao ommi i WWa at tc ch h S S1 1 P Pr ro o小小米米首首款款自自研研手手表表,搭搭载载自自研研的的R RT TO OS S系系统统Xiaomi Vela OS 系统,由 Vela 快应用框架提供三方应用运行能力,整机采用 480*480分辨率屏幕。内内存存占占用用高高嵌入式领域内存受限,快应用内存占用较高内内存存泄泄露露严严重重IOT 领域对内存泄露极端敏感,JS 容易出现泄露应应用用卡卡顿顿相较于
6、C,JS 执行效率差了不止一个数量级落落地地过过程程中中遇遇到到的的主主要要问问题题前端框架落地 IOT 也面临着很多现实问题:优优化化方方案案启用系统内存池,优化内存分配性能内存预分配,减少碎片字节码改造,合并字符串扩展实现WeakRef支持,减少对 GC 的依赖针对应用场景提供不同 GC 策略VDOM 由 C+实现双向数据绑定下沉到 C+系统能力尽可能由C实现提供static语法减少数据绑定数量编译后的页面描述二进制化需要寻求技术手段来提升 JS 执行效率,降低框架整体内存占用系系统统优优化化J JS S 引引擎擎优优化化框框架架优优化化应应用用优优化化内内存存泄泄漏漏问问题题JS 框架在