CodePush 实战:热更新部署全流程

本文最后更新于:2026年2月11日 上午

CodePush 实战:热更新部署全流程

⚠️ 重要提醒:微软已于 2024 年停止 CodePush 服务。这篇文章主要是作为历史参考,如果你正在做热更新方案选型,建议直接看文末的替代方案。

CodePush 是微软推出的一项云服务,允许开发者直接向用户设备推送应用更新。对于混合应用(Cordova/PhoneGap/Ionic/React Native),它解决了应用商店审核慢、Bug 修复周期长的问题。当年这个方案确实很实用,但随着官方停服,我们需要新的选择。

热更新的核心原理

CodePush 本质上是一个托管中心:

  1. 开发者把更新包(JS/HTML/CSS/图片)推送到 CodePush 服务器
  2. 应用启动或运行时检查更新
  3. 有更新就在后台静默下载
  4. 下次启动时自动应用新版本

需要注意:CodePush 只能更新 Web 内容(www 目录)。如果原生代码有变更(比如新增了原生插件),必须通过应用商店发布新版本。这是混合应用热更新的根本限制。

环境准备

1. 安装 CLI

1
npm install -g code-push-cli

2. 注册账号

1
code-push register

支持 GitHub 或 Microsoft 账号登录。授权成功后,复制 token 到命令行完成注册。

3. 注册应用

1
code-push app add MyApp

这会返回两个 deployment key:

  • Staging:测试环境
  • Production:生产环境

集成到 Cordova

安装插件

1
cordova plugin add cordova-plugin-code-push@latest --save

配置安全策略

index.html<head> 中添加:

1
2
<meta http-equiv="Content-Security-Policy" 
content="default-src 'self' https://codepush.azurewebsites.net;">

基础代码

1
2
3
document.addEventListener('deviceready', function() {
codePush.sync();
}, false);

发布更新

常用命令

1
2
3
4
5
6
7
8
9
10
11
# 发布到生产环境
code-push release-cordova MyApp ios --deploymentName Production

# 带描述和强制更新
code-push release-cordova MyApp android \
--deploymentName Production \
--description "修复登录崩溃" \
--mandatory

# 灰度发布(50%用户)
code-push release-cordova MyApp ios --rollout 50

查看发布历史

1
code-push deployment history MyApp Production

发布历史示例

回滚操作

1
2
# 回滚到上一个版本
code-push rollback MyApp Production

版本控制注意事项

Cordova 项目的更新检查基于 config.xml 中的版本号:

1
<widget id="com.example.myapp" version="1.0.1">

替代方案

微软已于 2024 年停止 CodePush 服务,建议迁移至:

  • App Center:微软的新版本
  • Expo Updates:React Native 生态
  • 自研方案:OSS + 自建更新服务

CodePush 实战:热更新部署全流程
http://bestkele.com/2017/02/09/concept/code-push/
作者
kele
发布于
2017年2月9日
许可协议