前期准备
环境
本文测试都是基于以下配置进行测试
1 | info |
过程
1. Install the App Center CLI
要管理大多数CodePush功能,需要使用App Center CLI。通过以下命令安装
1 | npm install -g appcenter-cli |
注意:官方提示,不要使用
sudo
权限来执行安装这个命令。
在成功安装App Center CLI后,执行下面的命令来配置你的App Center账户详情
1 | appcenter login |
账户信息:
1 | Logged in as wankeenergy-gmail.com |
1.1 在App Center上创建App
- iOS
1 | appcenter apps create -d PowerPlus-iOS -o iOS -p React-Native |
创建成功输出类似如下
1 | ➜ SolarEnergy git:(dev_chenlong) ✗ appcenter apps create -d PowerPlus-iOS -o iOS -p React-Native |
- Android
1 | appcenter apps create -d PowerPlus-Android -o Android -p React-Native |
我们可以把App Center上的应用程序PowerPlus-iOS
设置为当前的应用程序
1 | appcenter apps set-current wankeenergy-gmail.com/PowerPlus-iOS |
设置测试(Staging
))和 生产(Production
)环境密钥,这样的话避免测试的时候应用到生产环境
1 | appcenter codepush deployment add -a <ownerName>/<appName> Staging |
由于我们刚才使用appcenter apps set-current
设置了PowerPlus-iOS
设置为当前的应用程序, 所以直接
1 | appcenter codepush deployment add Staging |
输出如下
1 | ➜ SolarEnergy git:(dev_chenlong) ✗ appcenter codepush deployment add Staging |
部署生产环境
1 | ➜ SolarEnergy git:(dev_chenlong) ✗ appcenter codepush deployment add Production |
将当前应用程序设置成Android
1 | appcenter apps set-current wankeenergy-gmail.com/PowerPlus-Android |
1 | ➜ SolarEnergy git:(dev_chenlong) ✗ appcenter codepush deployment add Staging |
可以使用下面的命令来查看当前应用程序的部署key
1 | ➜ SolarEnergy git:(dev_chenlong) ✗ appcenter codepush deployment list --displayKeys |
输出如下
Name | Key |
---|---|
Staging | tFRH5R1fNGA_BTQ_P4ixCiR4v6TsEUL4iSMZj |
Production | Daj3dgNAeyKYFzAqWGWfoV9PggYm8eX76vbMC |
如果想改变已命名的应用程序名,可以使用如下命令
1 | appcenter apps update -n <newName> -a <ownerName>/<appName> |
要想从服务器上移除app
,可以使用如下命令(要注意,如果删除,则无法再更新app
)
1 | appcenter apps delete -a <ownerName>/<appName> |
如果想要列举所有在App Center服务器上的app
,可以运行如下命令
1 | appcenter apps list |
比如
1 | ➜ SolarEnergy git:(dev_chenlong) ✗ appcenter apps list |
回滚版本
1 | appcenter codepush rollback |
2. CodePush-ify你的app
添加CodePush client SDK到你的app
,通过配置,从App Center中拉取所部署的app
更新, 详情可参考
2.1 开始
1 | npm install --save react-native-code-push@5.7.0 |
Android
和iOS
的配置方式有所不同,要注意的是,官方推荐为每一个平台单独创建一个CodePush应用程序。如果你想要看一下其他工程如何集成CodePush,可以看一下社区提供的一些样例app
: example apps。此外,如果你想快速熟悉CodePush + React Native,可以看一下这些人制作的视频:Bilal Budhani和Deepak Sisodiya。
2.2 iOS设置(这里按RN版本小于0.6来安装,因为我是0.59.9)
1 | react-native link react-native-code-push |
上面这个命令会提示输入一个部署key
(这个key
就是上面已经添加的Staging
和Production
),可以按回车键忽略,后面再配置也可以,可以通过以下命令来获取部署key
1 | appcenter codepush deployment list -a <ownerName>/<appName> --displayKeys |
2.3 到这里之后,我们运行react-native run-android
可能会报错如下:
1 | * What went wrong: |
解决办法,在android/app/build.gradle
下添加
1 | android { |
2.4 在项目根组件添加CodePush
1 | import codePush from "react-native-code-push"; |
3. 部署测试和生产环境密钥进行多端测试
4. 发布app更新
注意:Android
打包测试热更新的时候用下面这个命令
1 | ./gradlew assembleReleaseStaging |
如果用./gradlew assembleRelease
的话,默认走的是Production
。
如果需要直接在本地调试安装在android
手机上的Staging
版本,可以执行
1 | react-native run-android --variant=releaseStaging |
iOS
打包需要在archive
的时候选择Staging
,否则打的也是Production
。
在更新代码后,使用App Center CLI发布更新到App Center,根据下面发布即可
React Native
执行App Center CLI的release-react
命令来打包代码和asset
文件,然后发布到App Center server作为一个新的发布。例如
1 | appcenter codepush release-react -a <ownerName>/MyApp |
App Center CLI的一个重要特性就是可以使用
appcenter apps set-current <ownerName>/<appName>
把一个app
设置为当前的app
. 通过把app
设置为当前app
,就没有必要使用-a
标志。例如,命令appcenter codepush deployment list -a <ownerName>/<appName>
可以用appcenter codepush deployment list
来代替。你也可以使用命令appcenter apps get-current
来查看哪个app
被设置成你账号的当前app
。
发布一个更新(加-m
就是强制更新,会立即重启app
),并带有日志描述
1 | // 强制立即重启 |
发布更新到具体的版本
1 | appcenter codepush release-react -a <ownerName>/MyApp-Android --target-binary-version "1.1.0" |
也可以指定范围要发布到哪些版本,参数如下
1 | Range Expression Who gets the update |
要发布到生产环境还是测试环境,可以使用--deployment-name 或 -d
,默认是Staging
, 例如要发布到版本1.1.0
的生产环境
1 | appcenter codepush release-react -a <ownerName>/MyApp-Android --target-binary-version "1.1.0" --deployment-name Production |
5. 运行你的app
一旦这些步骤完成,所有运行app
的用户都会收到更新。