RN用自己的服务器热更新
2018-09-03 本文已影响8人
rocky_tt
不使用第三方,用自己的服务器更新。
RN的热更新其实就是替换App加载的js包,更新分为全量更新和增量更新;
全量更新很简单,就是下载js包存到本地,下次APP读取新的路径;
增量更新需要用到bsdiff第三方工具,bsdiff有分离和合并2个方法; bsdiff用分离方法 将新旧文件(jsbundle_orgin,jsbundle_new)生成一个差异文件(简称patch包),将patch包放在服务器上供App下载;
App下载后再用bsdiff的合并方法将本地的原始jsbundle和patch包合并成新的jsbundle,存在本地,下次App启动就 读取新的路径;
上代码:
分包:Mac可以使用终端命令,直接敲bsdiff回车,使用方法,会有提示bsdiff: usage: bsdiff oldfile newfile patchfile,生成的patch文件可以上传到自己的服务器,如果太大可以再压缩成zip;
合包:下载bsdiff, 可以参考现成的RN中文网的更新代码,注意将里面的bspatch.c文件替换成刚刚下载的bspatch.c,把bspatch.c里面的err函数改为return -1;err函数会触发App崩溃;更新代码逻辑需要花点时间慢慢看;