团队通常会选择三种移动环境的方法之一:
- 两套应用ID(生产环境+预发布环境)
- 一套应用ID+动态运行时环境切换
- 一套应用ID+Capgo频道
前两种方式可以工作,但它们会带来长期的摩擦。在实际团队中,Capgo 通道模型通常是最干净的。
为什么重复的应用 ID 变得噪音
使用 com.myapp 和 com.myapp.beta 看似简单,但你很快就会出现重复:
- 两个发布管道
- 两个推送 ID、深度链接和权限映射
- 两个分析和崩溃身份
- 环境之间的配置不一致和行为不一致
你最终需要管理两个产品,涉及到商店控制台、团队和内部 QA 指南。
为什么在运行时切换配置通常很混乱
使用 '一个应用 ID + 运行时切换' 模式通常意味着你的应用在启动时读取环境变量或标志,并动态重定向 API、密钥和更新行为。
直到:
- QA开始绕过预期的流程,因为配置状态过时了
- 有人在生产环境中使用了错误的端点
- 环境漂移导致难以复现的错误
- 你需要在用户设备上调试“这个二进制文件使用哪个配置版本?”的问题
这种复杂性随着每次发布而增长,团队的速度也会减慢
The Capgo way: one app ID, many channels
Capgo makes environment control explicit through channels:
- 只保留一个生产应用ID在App Store/Play中
- 将一个本机二进制文件发送到“壳”(直到本机更改需要真正重建为止)
- 通过频道而不是重复的应用标识来路由行为
在实践中,这意味着:
production: 所有用户staging: 内部QA和发布候选人beta: 受邀测试者hotfix: 紧急修补轨迹
您的TestFlight/Play内部测试应用程序可以永久留在这里。
您可以在这里反复进行JS/CSS/资产更新,而不需要发布新的原生应用程序。 staging forever.
You do JS/CSS/asset updates there repeatedly through Capgo without publishing a new native app.
1) 原生发布基线
您的最后一个原生二进制文件在多个JS迭代中保持不变:
您只在实际改变原生表面区域时重建原生二进制文件。
bun run build
bunx cap sync
# generate Xcode/Android Studio archives as usual
2) 为环境使用专用通道
使用通道发布更新:
__CAPGO_KEEP_0__
bun run build
bunx @capgo/cli deploy --channel staging
测试环境中使用Capgo通道
bunx @capgo/cli promote vX.Y.Z --channel production
如果您喜欢明确的版本控制
bunx @capgo/cli deploy vX.Y.Z --channel staging
bunx @capgo/cli promote vX.Y.Z --channel production
3) 保持TestFlight “始终为预生产”
在iOS工作流中,这意味着您的TestFlight构建可以与预生产更新相关联:
- 不频繁提交每个JS更改的本机版本。
- QA始终通过预发布code通道验证近生产环境。
- 生产用户只接收从生产通道推送的包。
4) 仅在受控工作流中使用通道切换
对于高级团队,暴露受控的通道切换给QA/管理员用户:
import { CapacitorUpdater } from '@capgo/capacitor-updater';
await CapacitorUpdater.setChannel({
channel: 'staging',
triggerAutoUpdate: true
});
这不是必须的。大多数团队从仪表板使用通道 assignments,并且仅在内部用户中切换通道,而不是所有客户。
运维清单
- 仅使用一个应用程序ID(无重复的生产/测试ID)
- 一个原生构建管道基线
- 频道映射文档(
staging,beta,production,hotfix) - CI/CD 中推进路径
- 仅在真实原生变化时重建原生
- 定期测试回滚
实用益处
这种方法可以移除环境漂移,减少构建混乱,提高修复速度:
- QA 可以获得真实的二进制文件(不再有假的“测试应用”身份),
- 您的 TestFlight 路径保持稳定
- 您的团队避免了“两个应用 ID 债务”,
- you can push many JS-only fixes through Capgo quickly.
最终结果是更简单的治理: fewer artifacts, cleaner telemetry, and fewer surprises in release operations.
继续阅读Capgo环境最佳实践:使用一个移动应用ID进行分阶段部署
如果您正在使用 Capgo环境最佳实践:使用一个移动应用ID进行分阶段部署 与__CAPGO_KEEP_0__环境最佳实践:使用一个移动应用ID进行分阶段部署 __CAPGO_KEEP_1__ __CAPGO_KEEP_1__ __CAPGO_KEEP_1__ __CAPGO_KEEP_1__ __CAPGO_KEEP_1__ __CAPGO_KEEP_1__ __CAPGO_KEEP_1__ __CAPGO_KEEP_1__ 版本目标解决方案 用于版本目标解决方案的产品工作流。