weex笔记(4)weex热更新方案

2018-11-28  本文已影响0人  FateOfKing

原理:利用bsdiff/bspatch开源工具。

服务端利用bsdiff工具,对比新老dist.zip(包含编译后的js文件)生成较小的差分文件,下发到客户端。

客户端利用bspatch工具,将差分文件和老dist文件生成新的dist。

具体方案:

服务端:

  1. 每次发布一个新版本自动打包一个dist.zip

  2. 利用bsdiff与所有老版本的dist.zip分别生成差分包

  3. 检测版本更新接口至少上传一个个参数:oldVersion。匹配若不是最新版需要返回对应差分包的下载地址

客户端:

  1. 检测版本更新,下载差分包

  2. 利用bspatch,将本地olddist.zip和差分包合成新的dist.zip包

  3. 设计两种版本更新方式

    大版本更新,弹框告知强制更新;

    小版本更新,静默下载更新(适用于修复bug);

  4. 沙盒dist中js文件需要加入防篡改机制(root安卓和越狱ios),哈希校验或者其他方式。(校验不通过方案:可以考虑重新下载该文件,或者利用bspatch重新生成新的dist.zip)

优势:

  1. 快速修复bug

  2. 小功能上线无需发布版本

缺陷:

  1. 版本越多,服务端差分包越多,后期每次生成差分包时间会很长(不过可以通过脚本完成,暂时可以忽略)

  2. 大功能更新涉及原生代码改动,无法使用

上一篇下一篇

猜你喜欢

热点阅读