使用微软CodePush动态更新Cordova APP
code-push是微软提供的一套用于热更新 React Native和 Cordova应用的服务,微软的appcenter提供更新服务,也可以自己搭建服务器code-push-server。
https://microsoft.github.io/code-push/
安装appcenter-cli
code-push-cli
已经废弃,目前推荐使用appcenter-cli
,原来的npm install -g code-push-cli
已经不建议使用了。
注意:一般情况下的命令都可以添加--help
查看帮助信息。
https://docs.microsoft.com/en-us/appcenter/cli
npm install -g appcenter-cli
appcenter -v
appcenter --help
登录AppCenter
登录账号:
appcenter login
弹出到浏览器登录,也可以在浏览器输入命令返回的地址,如:https://appcenter.ms/cli-login?hostname=10390-SDIT
可以选择登录方式,如Github等:
登录后获取Access code from browser:填入
登录成功。
配置AppCenter CodePush
登录成功之后,可以创建和配置App了。
创建APP
appcenter apps
下面的命令就是管理app列表:
#帮助
appcenter apps --help
#说明(帮助:appcenter apps create --help)
appcenter apps create -p|--platform <arg> -o|--os <arg> -d|--display-name <arg> [-r|--release-type <arg>] [-n|--name <arg>] [--description <arg>]
#示例
appcenter apps create -p Cordova -o Android -d NewConnectApp
创建结果:
App Secret: b50fff61-41a5-48fd-bc0e-xxxxxxxx
Description:
Display Name: NewConnectApp
Name: NewConnectApp
OS: Android
Platform: Cordova
Release Type:
Owner ID: 8e4aa89e-fc54-4e75-8c8e-xxxxxxxxxx
Owner Display Name: Gary
Owner Email: xxxxxxxxxx@gmail.com
Owner Name: fugary
Azure Subscription ID:
创建CodePushKey
新建App之后CodePushKey为空,创建Deployment,会得到CodePushKey,这个key将填到Cordova App的config.xml文件中,只有填入之后才能使用。
appcenter codepush deployment --help
# 创建Deployment
appcenter codepush deployment add -a fugary/NewConnectApp Production
appcenter codepush deployment list -a fugary/NewConnectApp --displayKeys
获取到Key如下:
配置Cordova APP
这里假设已经开发好基于Cordova的App了。
安装配置cordova-plugin-code-push插件
地址:https://github.com/Microsoft/cordova-plugin-code-push
安装cordova-plugin-code-push插件
cordova plugin add cordova-plugin-code-push@latest
配置config.xml
YOUR-ANDROID-DEPLOYMENT-KEY就是上面获取到的CodePushKey:
<platform name="android">
<preference name="CodePushDeploymentKey" value="YOUR-ANDROID-DEPLOYMENT-KEY" />
</platform>
<platform name="ios">
<preference name="CodePushDeploymentKey" value="YOUR-IOS-DEPLOYMENT-KEY" />
</platform>
platform相关应该已经存在,只需要添加一行:
<preference name="CodePushDeploymentKey" value="YOUR-ANDROID-DEPLOYMENT-KEY" />
使用codepush更新
在代码中需要调用更新代码:
if (window.cordova && window.codePush) {
window.codePush.sync() // 默认ON_NEXT_RESTART安装
}
发布到AppCenter
appcenter codepush release-cordova --help
appcenter codepush release-cordova -a fugary/NewConnectApp -d Production --description "new release"
下次启动App的时候会自动更新app了。