RN增量更新

RN增量更新

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

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

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

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

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

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

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是合并后的新文件

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

好了,这个弄明白的话,我们就可以拆分包的事情可以在本地做,也可以交给服务器去做,但是我们从服务器下载patch文件后的合并一定要自己做。

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

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

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

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

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

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

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

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

而且讲道理那些资本大佬的奋斗若论艰苦程度我感觉还比不上我爷爷当红军那时候呢,为什么他们老可以吹来吹去的……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值