常用命令
以下命令基于code-push环境已经安装好
并且如下命令基本能满足常见热更新操作
- 登录
微软
的服务器(默认)
code-push login
- 登录自己部署(公司)的服务器
code-push login 自己的域名地址
说明:
1, 执行登录命令会打开浏览器,并且在浏览器屏幕正中间会显示token
,将此token复制粘贴到终端,enter,就能登录成功。
2, 使用另外一台电脑生成的token,也可以登录(注意token会过期,如果过期登出再登录就行)。或者 默认浏览器如果没有登录code-push,需要先登录从而获取token。
3, 另外部署code-push到自己公司服务器,在iOS项目info.plist
中需要添加一个key——CodePushServerURL
<key>CodePushServerURL</key>
<string>http://codepush.xxxx.cn:xxxx/</string>
查看当前code-push账号下面的app
code-push app ls(或list)
命令来查看deployment key
code-push deployment ls <APP_NAME> -k
登出code-push
code-push logout
下面命令终端需切换到RN项目根目录
下
打包main.jsbundle
react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ./bundle/main.jsbundle --assets-dest ./ios/bundle
-
发布rn的bundle到微软服务器
方案1(推荐):
code-push release-react YourProjectName ios --t 1.0.0 --dev false --d Staging --des "xxxxx"
此处版本号要注意,详细见下文常见问题方案2:
code-push release-react YourProjectName ios
也就是code-push release-react <AppName> <PlatName>
这条命令默认发布到Staging,版本号1.0
将测试版本Staging提升为Production
code-push promote YourProjectName Staging Production
-
查看发布的历史记录
- Staging
code-push deployment history YourProjectName Staging
- Production
code-push deployment history YourProjectName Production
- Staging
想了解更多的命令详情,可以去官方文档查阅
常见问题
坑1(对于iOS):
app无法加载出本地图片资源!!
- 解决:
就是把你的结果(main.jsbundle
和assets
)拖入工程时,对于assets文件夹,你要选择create folder reference
,而不是create folder group
.
正确的结果是assets文件夹是一个蓝色的文件夹
,整个一起作为bundle resources
坑2(双端):
热更新不生效 (版本号设置问题引起)
- 解决(iOS端):
// 设定每次热更新的版本号
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge {
[CodePush overrideAppVersion:@"1.0.0"];
return [CodePush bundleURL];
}
// RN项目提交热更新版本
code-push release-react YourProjectName ios --t 1.0.0 --dev false --d Staging --des "xxxxx"
说明:
应该设定每次热更新的版本号(比如1.0.0
),RN项目提交热更新版本的时候版本号要与此相同(比如1.0.0)
然后服务器会根据设定的版本号去找改版本号最新的提交(而不是code-push默认的V1、V2那种版本号),如果找得到就能热更。否则热更无效。
参考资料:
1,简洁直接的code-push使用教程(快速上手建议看这个)://www.greatytc.com/p/67de8aa052af
2,深入分析的教程://www.greatytc.com/p/9e3b4a133bcc
3,官方文档(对照上面的博客看):http://microsoft.github.io/code-push/docs/react-native.html
4,踩坑参考:https://www.cnblogs.com/rayshen/p/5502538.html