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与服务器上热更新包;如果完全一样就不会更新;后面增加的更新也只是增量包
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。