weex笔记(4)weex热更新方案
原理:利用bsdiff/bspatch开源工具。
服务端利用bsdiff工具,对比新老dist.zip(包含编译后的js文件)生成较小的差分文件,下发到客户端。
客户端利用bspatch工具,将差分文件和老dist文件生成新的dist。
具体方案:
服务端:
每次发布一个新版本自动打包一个dist.zip
利用bsdiff与所有老版本的dist.zip分别生成差分包
检测版本更新接口至少上传一个个参数:oldVersion。匹配若不是最新版需要返回对应差分包的下载地址
客户端:
检测版本更新,下载差分包
利用bspatch,将本地olddist.zip和差分包合成新的dist.zip包
设计两种版本更新方式
大版本更新,弹框告知强制更新;
小版本更新,静默下载更新(适用于修复bug);
- 沙盒dist中js文件需要加入防篡改机制(root安卓和越狱ios),哈希校验或者其他方式。(校验不通过方案:可以考虑重新下载该文件,或者利用bspatch重新生成新的dist.zip)
优势:
快速修复bug
小功能上线无需发布版本
缺陷:
版本越多,服务端差分包越多,后期每次生成差分包时间会很长(不过可以通过脚本完成,暂时可以忽略)
大功能更新涉及原生代码改动,无法使用
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Welcome Keven's Blog!