2

ReactNative中热更新一般都是用CodePush;

CodePush官方github地址:https://github.com/Microsoft/...

了解了CodePush是干什么的,就开始正题了;

1、在你的App中集成react-native-code-push

react-native-code-push官方github地址 :https://github.com/Microsoft/...
按照官方文档集成好;

2、搭建你自己的热更新服务器

根据你前面的了解,CodePush的官方服务器是Microsoft的,身在天朝的我们用户更新速度是无比慢的;所以需要自己搭建服务器,服务器控制权在自己手里,也放心些;
开源服务器地址https://github.com/lisong/cod...
按照官方的教程,部署好;

修改admin账号的密码

假如你热更新服务器的地址是: http://hot.nero-zou.com; 那么使用 默认账号(admin)、密码(123456)登录进去;可以得到token: Gg9T4nXPpWzvIFKxHNsARwtoZhjY40svOXqog, 这个token在你后面发布热更新也是要用到的;
得到token后,在命令行里执行下面这个命令:
curl -X PATCH -H "Authorization: Bearer Gg9T4nXPpWzvIFKxHNsARwtoZhjY40svOXqog" -H "Accept: application/json" -H "Content-Type:application/json" -d '{"oldPassword":"123456","newPassword":"654321"}' http://hot.nero-zou.com/users/password
注意上面的 token 域名 密码换成你自己的配置

优化热更新速度:

按照官方文档: https://github.com/lisong/cod... 配置Storage mode 为 qiniu或者s3, 我推荐使用 使用七牛,因为有10Gb的免费流量;
注意bucket绑定好域名,不然更新包下载速度会比较慢

生产、开发环境分开

由于我没找到添加多个账号、和根据账号分配应用权限的方法,我是部署了两个服务,一个对应生产环境,一个对应按开发环境;

code-push-cli命令

中文文档:https://github.com/Microsoft/...

常用的命令:

  • 登录:code-push login http://hot.nero-zou.com:3000 ,如果配置了nginx反向代理,要注意带上端口号登录,因为nginx代理传输的数据大小有限制;在执行 code-push release-react时会碰到,带上端口号就没有Nginx代理这一层了;
  • 创建应用: code-push app add <appName> <os> <platform>
  • 发布更新: code-push release <appName> <updateContents> <targetBinaryVersion>

PS: AppStore对 CodePush的应用没限制;
PPS: 有了热更新,改好bug给测试验证方便多了只要不涉及原生代码改动都不需要重新打包了;

一些经验

  • 每次应用发布新版本时,在应用打包好后,推个热更新;目的是为了减小后面客户端热更新包的大小;
    原理:code-push检测更新的原理是比对本地bundle与服务器上热更新包;如果完全一样就不会更新;后面增加的更新也只是增量包

Nero_Zzz
1.3k 声望33 粉丝

null