1,安装code-push命令行工具
npm install -g code-push-cli
2,注册code-push账号。
code-push register
3,添加app
code-push app add FreshToHome_Customer_iOS ios react-native
code-push app add FreshToHome_Customer_Android android react-native
此处记下app测试和正式发布的key。
4,项目根目录下安装code-push的依赖
yarn add react-native-code-push
5,将依赖link到原生项目里面,此时需要填写iOS和Android应用的deploymentKey,这两个deploymentKey分别写入到ios目录下的info.plist文件(CodePushDeploymentKey)和android目录下的strings.xml,这里填写staging下的key。
6,在JS项目里面添加更新检测的代码,推荐使用sync接口。
7,发布更新
这个命令自动打包和上传包到codePush的server,上传到Staging
code-push release-react FreshToHome_Customer_iOS ios
code-push release-react <AppName> <platform>
[--bundleName]
[--deploymentName]
[--description]
[--development]
[--disabled]
[--entryFile]
[--mandatory]
[--sourcemapOutput]
[--targetBinaryVersion]
[--rollout]
里面有个--deployName这里可以设置deploy的环境,Staging or Production.
8,版本转移
此外,我们还可以选择Staging里面的稳定的版本,直接转移到Production下,进行发布。将Staging下的最后一个更新版本复制转移到Production下,成为一个版本。
code-push promote FreshToHome_Customer_iOS Staging Production
9,查看部署状态:
查看app在Staging和Production下的部署状态:
code-push deployment ls FreshToHome_Customer_iOS
查看app在Staging状态下的部署历史
code-push deployment history FreshToHome_Customer_iOS Staging
10,版本回退。
code-push rollback <AppName> <deploymentName>
版本回退的本质是产生一个新版本。
11,修改更新。
code-push patch <AppName> <deploymentName>
[--label]
[--description ]
[--disabled]
[--mandatory]
[--rollout ]
需要注意:
正常更新需要做到两点:
1,banary的版本,也就是app原生的版本没有变。
2,js的内容要发生变化,如果没有变化,将会发布更新失败,将--noDuplicateReleaseError设置为true,js代码没有发生变化,不会报错,依然发布更新会失败。
参考文章:
http://www.jianshu.com/p/f8689ccf0007
https://github.com/Microsoft/code-push/blob/master/cli/README-cn.md#%E5%8F%91%E5%B8%83%E6%9B%B4%E6%96%B0-react-native
https://segmentfault.com/a/1190000008591456#articleHeader9
code-Push功能列表:
安装:npm install -g code-push-cli
注册账号:code-push register
登陆:code-push login
注销:code-push logout
添加项目: code-push app add [app名称] ios
删除项目: code-push app remove [app名称]
列出账号下的所有项目: code-push app list
显示登陆的token: code-push access-key ls
删除某个access-key: code-push access-key rm [accessKey]
添加协作人员:code-push collaborator add next@126.com
添加一个部署:code-push deployment add [AppName] [DeployName]
删除部署:code-push deployment remove [AppName] [DeployName]
列出应用的部署:code-push deployment ls [AppName]
查询部署环境的key:code-push deployment ls [AppName] -k
查看部署的历史版本信息:code-push deployment history [AppName] [DeployName]
重命名一个部署:code-push deployment rename [AppName] [CurrentDeployName] [NewDeployName]
项目中使用需要注意的事项:
1,每一个js发布,都有对应的发布号,如v20,以及对应的binary版本号,如1.3.0,1.3(需要注意,1.3和.1.3.0会被认为是同一个binary版本)
2,使用relese-react命令时,如果不指定binary的版本号,对Android的js包来说,会从gradle的配置中去读binary的版本号,iOS会从对应的info.plist中,查到version的版本号。
3,指定js包的disabled为true时,已经安装该js包的用户,会提示更新,这时会更新到该binary版本下的上一个js包。没有安装该js包的用户,不会安装到这个js包。
4,命令行发布js包的时候,更新描述,--description里面需要换行,使用 '\\n'。