自建热更新与发布平台 · iOS / Android / H5

开发只提交代码,
网页审批即可安全地推送到用户手机

App 的 JS 改动无需重新提交应用商店审核,H5 网站同样按比例灰度上线。平台负责自动打包、加密、灰度发布与一键回退,三端、多个产品统一管理,数据和服务完全掌握在自己手里。

0 步
开发除提交代码外无需任何发布操作
绕过商店审核
JS 改动直接推送,原生改动仍走整包
灰度 + 一键回退
按比例放量,出问题设备自动回到可用版本
三端 + 多品牌
iOS、Android、H5 一个平台管理,品牌间相互隔离

发布流程

从提交代码到全量上线,每一步都有人负责、有记录可查。

01
开发
提交代码
git push 到指定分支,或在网页选提交点「打包」
02
系统自动
打包加密
GitLab 流水线编译字节码、签名、加密
03
系统自动
发到测试通道
只有测试设备能收到
04
测试
验证通过
在网页提交推广申请,附测试说明
05
发布负责人
网页审批
批准或驳回,申请人不能审批自己
06
系统自动
灰度上线
10% → 50% → 100%,实时看安装与回滚数据
演示:灰度放量与一键回退(示意动画)
准备发布
每个方块代表一批用户设备
10%50%100%发现问题一键回退
旧版本 已收到新版本 已回到可用版本
出现问题,一键止损:网页一键禁用版本或回到安装包内置版本,用户设备自动回退;止损操作不需要审批,但全程留痕。新包启动即崩溃时,设备在下次启动时自动回滚,无需人工介入。

系统组成

复用公司已有的 GitLab,只新增一个自建平台;签名私钥不存放在平台,平台即使被攻破也无法伪造更新包。

GitLab(已有)

代码仓库开发提交代码
流水线自动打包、签名、上传

热更新平台(自建,Docker 部署)

网页控制台打包、审批、灰度、禁用、数据统计、设备排查
服务端 + 数据库项目、通道、版本、构建记录、设备上报
云存储 + CDN阿里云 OSS / 腾讯云 COS,国内就近下载

各产品(App 与 H5)

产品 AiOS / Android App
产品 BiOS / Android App
H5 站点浏览器直接访问,按用户灰度
更多品牌一个品牌一个项目,互不影响

三端统一:iOS、Android、H5

审批、灰度、白名单、一键回退、操作记录、控制台与流水线三端共用一套,只有下发方式按端区分。

iOS

App 内 SDK 检查、下载、校验并安装新包;新包崩溃自动回滚。

状态:一期已完成

Android

与 iOS 同一套机制与安全措施,服务端与打包命令已预留支持。

状态:阶段一完成后紧接着开发

H5 网站

用户访问时,平台按灰度比例与白名单为其选择版本;同一用户始终看到同一版本,禁用后刷新即回到上一版本,无需安装任何 SDK。

状态:Android 之后开发

相比老的 CodePush,好在哪里

CodePush 是微软的热更新服务,所在的 App Center 已于 2025 年 3 月停止服务;继续使用只能依赖社区维护的自建版本。

1不会被停服卡脖子

平台与 SDK 全部自研自建,代码和数据都在自己手里,可随 React Native 新版本持续升级。

CodePush:官方服务已停,SDK 不再更新

2包内容加密,防止源码泄露

每个版本一把随机密钥加密,CDN 上的文件即使被下载也无法还原 JS 代码;同时强制签名,防止被篡改。

CodePush:包是普通压缩文件,签名为可选项

3开发零操作,网页控制发布

提交代码自动打包到测试通道,网页也可选任意提交打包,不需要开发在本机执行命令。

CodePush:需要开发在本机或自建脚本执行发布命令

4上线必须审批

推到正式环境必须由发布负责人在网页审批,申请人不能自审,所有操作留记录。

CodePush:有权限即可直接推广,无审批流程

5精细化排查

白名单设备可提前体验;按设备 ID 查询检查与安装记录,快速定位个别用户问题。

CodePush:只有汇总数字,无法查单台设备

6国内速度与数据合规

服务与 CDN 部署在国内云,下载更快;设备数据不出境。

CodePush:服务器在海外,国内访问慢、不稳定

7App 与 H5 一个平台发布

iOS、Android、H5 共用审批、灰度、回退与数据统计,团队只需学一套流程。

CodePush:只支持 React Native App,H5 灰度需另找方案

与 CodePush 同等具备:按比例灰度、新包崩溃自动回滚、Hermes 字节码、可选/立即/下次启动三种生效方式。

与其他主流平台对比

综合来看,我们是唯一同时做到「自建可控 + 包加密 + 审批 + 网页触发打包」的方案。

能力 我们的平台 CodePush(已停服) Expo EAS Update Pushy(国内 SaaS) 开源 code-push-server
支持端iOS / Android / H5iOS / AndroidiOS / AndroidiOS / AndroidiOS / Android
部署方式自建,数据自有微软云,已停服Expo 云第三方云自建
费用只有服务器与 CDN 成本—按月活用户计费按套餐计费服务器成本
国内访问速度快(国内 CDN)慢一般(海外服务)快取决于部署
包内容加密✓ 每版本独立密钥✗✗(只签名)✗✗
强制签名防篡改✓可选可选—可选
上线审批✓✗✗✗✗
提交代码自动打包✓ 推送即打包 + 网页触发✗✓(EAS 工作流)✗✗
灰度发布✓ 比例 + 白名单✓✓✓✓
崩溃自动回滚✓✓✓✓✓
单设备排查✓✗有限有限✗
多品牌隔离✓ 独立密钥与通道✓✓✓✓
差量更新(省流量)规划中✓部分✓ 强项✓
不依赖 Expo 框架✓✓需接入 Expo 模块✓✓

说明:其他平台信息基于公开资料整理,各平台功能与价格可能已有更新,正式选型前建议以官方最新文档为准。

当前短板与应对

如实列出,避免上线后才发现。

暂无差量更新

每次下发完整包,流量比差量方案大。计划在业务层完成后单独补充。

Android 与 H5 待开发

目前只有 iOS 可用;阶段一完成后依次开发 Android 与 H5。

需要运维投入

自建意味着要维护服务器、数据库与 CDN;服务无状态,可直接扩容。

实施路线

共 11 个批次、3 个阶段;目前已完成第 1 批,下一步是数据层。

阶段一:提交代码即自动发布

完成后:推送到指定分支即自动打包发到测试通道
1 · 已完成服务端基础设施
3 · 待开发业务层
4 · 待开发接口与部署
5 · 待开发发布命令
6 · 待开发GitLab 流水线

阶段二:三端扩展

完成后:iOS、Android、H5 统一发布
7 · 待开发Android SDK
8 · 待开发H5 灰度发布

阶段三:网页控制

完成后:网页点打包、审批、灰度、看数据
9 · 待开发控制台:打包与发布
10 · 待开发账号权限与审批
11 · 待开发统计与设备排查
规划中差量更新

需要确认

产品清单

首批接入哪些产品、品牌与 H5 站点?

云厂商

包文件存储使用阿里云 OSS 还是腾讯云 COS?

H5 部署

现有 H5 部署在哪里,入口能否交给平台接管?

数据保留

设备上报数据保留多久?建议 90 天。