概述
本文档在于两个方面:
- 针对Code Push的一些常见概念进行解释。
- 针对公司的常见开发情景罗列及介绍Code Push的常用命令。
关于Code Push的详细信息请参考下面链接:
- Github微软Code Push Plugin(概述、英文、需梯子)
- Github微软Code Push CLI工具(英文、需梯子)
- react-native-code-push进阶篇(高级用例,中文,无需梯子)
Code Push概念
AppCenter
,应用中心。微软提供的一个应用管理平台。平台提供了热更新,应用监控等工具。其中Code Push是其提供的代码热更新管理工具。我们可以在AppCenter上面创建应用管理项目,管理我们实际发布的App。
Release
,发布,热更新推送。当我们更新了代码,通过Code Push把更新推送到客户端。这样的操作,称作一次发布,release。
Deployment
,部署。若干个release组成一个有前后依赖上下文的更新流称为一个部署,deployment。在创建App的时候Code Push会自动创建两个部署,Production和Staging。前者用作在线部署,后者则用作测试。Code Push还允许我们添加删除deployment,但通常我们并不会有这种需求。
常用Code Push常用命令
账号管理
code-push login
在终端登录AppCenter,该命令会在浏览器打开AppCenter登录页面,然后要求输入登录token。当用户在浏览器成功登录以后,网页会返回一个token,在终端输入该token就可以完成终端的登录。
code-push logout
在终端登出AppCenter。
code-push whoami
查看终端当前登录的账号。
App管理
code-push app add <appName> <os> <platform>
创建AppCenter应用管理项目。 譬如:code-push app add MyApp-iOS ios cordova
。
code-push app rm <appName>
删除AppCenter应用管理项目。
code-push app ls
罗列AppCenter中的应用管理项目。
Release管理
code-push release-cordova <appName> <os> -d <deploymentName> -t <targetBinaryVersion> -m
推送cordova App热更新。常用的参数有以下这些:
-t
,--targetBinaryVersion
,指定需要更新到该版本的版本。关于版本指定的更多信息,请参考下表。一般来说,我们输入大版本号,譬如^1.0.0,^2.0.0...即可。大版更新尽可能与项目架构、数据结构、API接口更新相关,这种情况更适合通过发布完整的应用进行更新。
Range | Expression Who gets the update |
---|---|
1.2.3 | Only devices running the specific binary version 1.2.3 of your app |
* | Any device configured to consume updates from your CodePush app |
1.2.x | Devices running major version 1, minor version 2 and any patch version of your app |
1.2.3 - 1.2.7 | Devices running any binary version between 1.2.3 (inclusive) and 1.2.7 (inclusive) |
>=1.2.3 <1.2.7 | Devices running any binary version between 1.2.3 (inclusive) and 1.2.7 (exclusive) |
1.2 | Equivalent to >=1.2.0 <1.3.0 |
~1.2.3 | Equivalent to >=1.2.3 <1.3.0 |
^1.2.3 | Equivalent to >=1.2.3 <2.0.0 |
-m
,--mandatory
,指定该版本是否强制,该选项可以在推送过后再进行修改。理解强制更新我们先设想3个版本,v1,v2,v3。
譬如说,v2修改了数据库结构,如果从v1直接升级到v3可能会造成数据存储问题。这个时候,我们需要对v2设置强制更新。让CP知道从v1升级到v3必须经历v2。因为公司的开发一般都基于前一个版本递进式更新,所以建议,推送的时候如果没有特殊情况应该都-m
。
在不指定该参数的情况下,默认为【不】强制更新。
-d
, --deployment-name
指定部署
。在不指定该参数的情况下,默认为Staging。
例如:code-push release-cordova MyApp-iOS ios -d Staging -t "^1.0.0" -m
。
意思是为cordova项目MyApp-iOS推送更新。应用系统为iOS;部署为Staging;把所有>=1.0.0,<2.0.0的终端标识为更新目标;把该release识别为强制更新。
code-push patch -a <ownerName>/<appName> <deploymentName> -l <releaseLabel>
为release打补丁(修改配置)。
例如code-push -a MyApp-iOS Staging -l v3 -m
。
意思是对应用管理项目"MyApp-iOS"的Staging部署的标识为v3的release进行修改。修改内容是把该release改成强制更新
(-m
)。