RN增量更新

RN增量更新node

Rn增量更新是最近项目的一个想法,可是到目前忽然对增量更新产生了怀疑,有大牛路过也能够指导一二。那么我先抛出怀疑的问题,而后重头开始讲。这个问题就是:算法

RN增量更新真的要每次上包把每一个版本都要打一个增量包吗?这不是维护起来太扯淡了……ruby

好,咱们重头开始说。所谓RN增量更新,就是说RN的热更新啊(此处暂时不考虑iOS的appStore更新)每次须要从服务器下载jsBundle包,那么因为热更新可能只是更新一个小小的点,因此这样每次从新下载jsBundle包就有一部份内容总是屡次重复下载。这个重复下载的部分就大概包括,ReactNative自己的代码部分+以前你写的老代码。因此咱们但愿RN增量更新就是每次更新的jsBundle只是一个增量包(增量包=新包-ReactNative自己的代码-以前的老代码),更新完增量包之后再和你线上的jsBundle合并起来,那么这个问题的第一步就是:服务器

我该怎样把一个jsBudle包分红旧包和新包?答案是用diff算法。app

这个diff算法我也不想弄明白了,反正是谷歌出的1种算法,谷歌的叫Diff Match Patch算法,而后有的博士写论文又弄成别的什么bsdiff什么的,总之用这个diff算法的东西特别多。spa

我实验了用node安装,试验了用ruby安装,还有直接拖进项目里的,最后感受用brew安装的会快一点,命令的话就是brew install。cdn

bsdiff命令: 1.生成拆分包: 命令:bsdiff old.file new.file add.patch ,即old.file是旧的文件,new.file是新更改变化的文件,add.patch是这两个文件的差别文件. 2.旧文件和差分包合成新文件: 命令:bspatch old.file createNew.file add.patch 其中createNew.file是合并后的新文件blog

关于文件格式的话,我试过能够拆分txt,能够拆分zip,PS:咱们的RN项目打完包就是zip格式的,由于里面除了有jsBudle,还有原生项目里的asset文件。可是生成的拆分包,都是patch格式的。都是啥啥啥.pat。ip

好了,这个弄明白的话,咱们就能够拆分包的事情能够在本地作,也能够交给服务器去作,可是咱们从服务器下载patch文件后的合并必定要本身作。it

这个首先是本地拆分文件的代码:

而后这个是本地合并文件的代码:

合并文件的地址只要咱们从咱们下载的地址更改一下就好了。

一开始我说的问题就是那么若是RN从1.0,到2.0到3.0到100.0,咱们难道在第100次上线的时候要上100个增量包吗?

也有的文章讨论说,咱们只要去除掉RN部分代码的包,作增量包就能够了,这样作法是很简单,可是还有没有必要了呢?

不过增量更新仍是一个值得了解的技术,由于我后面发现腾讯bugly出的app秒开h5更新方案里面好像也有增量更新的影子,那么app秒开h5方案,等我作完再聊。

话说天气真的很热,最近996的话题好像很火热。我想那些资本大佬在山顶呆的久了,不免会有时候忘记山脚下的样子。你在山顶上996,和我在山底下996能同样么?

还有有时候老有人拿奋斗当诱饵来勾引人,我就想知道奋斗就是努力上班吗?人就应该坚持不懈的奋斗吗?努力过好每一天,让本身天天都开心,算不算奋斗呢?

并且讲道理那些资本大佬的奋斗若论艰苦程度我感受还比不上我爷爷当红军那时候呢,为何他们老能够吹来吹去的……

相关文章
相关标签/搜索