写在前面:这里只讲实现热更新的增量更新.想要了解更新的其他方式或者是不同方式的比较请自行研究.
我的学习思路:
一.
目前成熟的方案有RN中文网的Pushy,Google提供的react-native-code-push.这两个的实现思路相差无几,只不过是服务器所在地不同,且Pushy方便你用写好的功能模块来搭建自己的热更新服务.先按照GitHub 上的例子走一遍.
二.
在你成功的使用这些成熟的方案后,仔细看看人家的代码.然后尝试下自己也写一套自己的热更新方案
三
下面我们就看下怎么模仿Pushy 写自己的热更新吧
开始
1 要做什么:
S1:生成增量包
S2:把增量包放自己的服务上
S3:RN客户端检查更新状态
S4:如果需要更新,选择更新方式,并且使用新的脚本或者资源文件
2 怎么做
了解了我们要做的事情后,就来看看Pushy 怎么做的(当然,有问题欢迎随便拍砖,我头铁)
react-native-update.jpeg上图中的android 和ios 文件夹对于移动端的同学可能很好懂,这里就不赘述了.
docs 则是整个pushy的使用说明,和GitHub 里面的是一样的
package.json 则记录了一些依赖库,npm安装的信息(不用过度关注)
我们主要是看local-cli里面的代码
这里都是些工具类,包括
output diff patch
,upload patch
,patch bind to APPVersion
然而这些功能都是需要输出到command tool 给大家使用的.对于这些用commanJS写的,我一个小白表示看不大懂.
user.js 用来和pushy 的用户校验有关,我们刚开始的不管,赞不做登录功能
bundle.js 命令行工具中的bundle
、diff
、diffFromIpa
、diffFromApk
四个功能主要就在这个文件中了
package.js 主要是负责生成各种包这一块的
app.js 则是增删patch,.ipa(.apk)
version.js 将patch和APP 绑定用,就是告诉客户端,那个版本的APP需要更新(未绑定的版本则不会监测到是否需要更新)
3 实战
知道了别人怎么做的之后,我们利用bundle.js 中的bundle
、diff
、diffFromIpa
、diffFromApk
功能做一套自己的东西.
网友评论