原理:利用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
-
小功能上线无需发布版本
缺陷:
-
版本越多,服务端差分包越多,后期每次生成差分包时间会很长(不过可以通过脚本完成,暂时可以忽略)
-
大功能更新涉及原生代码改动,无法使用
网友评论