跳转至正文

Capacitor App 发布工具与服务

通过 Native Build 准备、安全的 OTA 更新、分阶段发布、CI/CD、发布监控和回滚检查,规划您的 Capacitor 应用发布。

Capacitor App 发布工具与服务

当每次发布都能实现从 Web code 到 Native Build 再到用户的清晰路径时,发布 Capacitor 应用就会变得更加容易。以下是帮助您交付、监控和更新应用的工具与服务分步设置指南,包括各环节的 Capgo 适用位置。

我们分析了 YouTube 和 Reddit 上关于 Capacitor 应用发布工具的 45 条评论,发现 22% 的用户提到了调试工具和性能问题。

目录

  • 第 1 步:梳理可进行 OTA 更新的内容
  • 第 2 步:准备 Capacitor 项目与 Native Builds
  • 第 3 步:集成 Capgo 实现安全的 Live Updates
  • 第 4 步:创建 Channels 并逐步推送更新
  • 第 5 步:将 CI/CD 连接至发布工作流
  • 第 6 步:监控发布并验证回滚准备情况
  • 常见问题
  • 总结

第 1 步:梳理可进行 OTA 更新的内容

首先将计划中的变更分为两类:Web 层变更和 Native 变更。Capacitor 应用使用 Web code 来构建界面和应用逻辑,然后通过插件将该 code 连接到原生设备功能。

OTA(Over-the-Air)更新是指在不替换已安装原生包的情况下,替换应用的 Web bundle。这适用于修复文本、调整 CSS 或修复 JavaScript bug。而新增插件、权限或对已编译原生 code 的修改,则需要重新进行 Native Build 并通过常规的应用商店发布流程。

在选择发布服务之前,先列一份发布清单。将每项变更标记为“仅 Web”或“原生”。这种简单的分类可以确保微小的界面修复不会因为等待新的设备权限审核而导致发布延误。

Live Updates 适用于无需二进制更新的变更。请将此界限作为你的发布准则。当应用的已编译 code 发生变化时,应用商店审核和 Native Build 仍然是必不可少的。

OTA 现在已是基础功能,因此要关注其周边配套。仅靠服务发送新 bundle 是不够的,你还需要考虑如何针对测试组进行推送,以及如何从错误的发布中恢复。增量更新(Differential updates)可以只发送变更部分而非完整 bundle,从而减少每次更新的数据量。Channels 用于区分受众,而 rollback 则能让你将用户回退到已知稳定的版本。

这些细节决定了工具的选择。Capgo 将 Live Update 与 channels、发布控制和发布监控结合在一起。若想更全面地了解发布技术栈,请探索 移动端开发工具.

  • Web code、样式和资源:评估其 OTA 交付能力。
  • Native 插件、权限或编译后的 code:需规划新的 Native Build。
  • 高风险 Web 变更:需规划 channel、小范围 rollout 以及 rollback 路径。

在首次生产环境发布前,请明确这些边界。这能让工程师和产品负责人对“什么可以快速发布”达成共识。

第 2 步:准备 Capacitor 项目与 Native Builds

确保应用在开发机和发布 pipeline 中的构建方式一致。Capacitor 项目可以使用 Angular、React 或 Vue 等 Web 框架,也可以使用纯 Web code。请务必将框架的构建过程与 native 编译步骤分开。

基础构建流程分为三个部分。首先,使用框架工具构建 Web 应用。接着,将构建好的 Web 资源复制到 iOS 和 Android 项目中。最后,使用各平台的工具链编译每个 native 应用。

对于 iOS,原生编译步骤使用 Xcode。对于 Android,请使用 Android Studio 或平台的 Native Build 工具。如果你同时发布渐进式 Web 应用 (PWA),Web 端则有其独立的构建和托管流程。PWA 是用户可以通过浏览器使用或直接从浏览器安装的 Web 版本。

在引入更多发布工具之前,先确保构建过程是可重复的。为 Web 构建使用统一的文档化命令或脚本,并将资源复制 (asset-copy) 步骤整合进该流程中。如果开发者必须记住额外的复制步骤,很容易出现测试的是一个 bundle 却打包了另一个的情况。

同时要尽早检查原生端。在测试设备上安装各平台的 App。确认 App 所需的插件在构建后的 App 中可以正常工作,而不仅仅是在浏览器预览中。浏览器测试可以发现布局问题,但无法证明相机权限或其他原生 bridge 在真机上是否可用。

将插件配置纳入版本控制。对于自定义插件,请记录其原生依赖项以及团队成员如何构建它。这些记录能帮助发布负责人识别变更何时从 OTA 范畴跨越到了新的二进制文件 (binary) 中。

Capacitor 适合那些已有 Web 应用并希望实现原生打包及调用设备功能的团队。在规划移动应用时,团队可能还会权衡 React Native 和 Flutter;而桌面应用通常会考虑 Electron。选择哪种方案取决于代码库和目标平台,因此请根据实际应用需求而非框架标签来做决定。

一旦两个 Native Build 都能稳定复现,你就拥有了 OTA 发布所需的稳定基础。对于希望在进行 Live Update 的同时使用云端构建的团队,Capgo 还提供了 Native Build 工具。

第 3 步:添加 Capgo 以实现安全的 Live Updates

在你的首次 Native Build 成功运行后,配置 Capgo。Capgo 是针对 Capacitor 应用的 Live Update 服务。它负责将 web bundle 推送到已安装的应用中,而原生的 code 变更仍遵循传统的构建与商店发布流程。

Capgo 主页

首先将应用添加到 Capgo,并将其 Capacitor 项目连接到更新工作流。保留应用现有的 web 构建步骤。更新服务需要的是应用运行所需的已构建 web 资源,而不是未构建的源码树。

然后检查发布版本是如何从你的机器传输到服务的。Capgo 支持通过命令行工作流进行发布,包括一键部署路径。这能让发布过程更易于复现:开发者在测试时或团队检查通过后的 CI 都可以运行相同的命令。

在向真实用户启用 Live Updates 之前,请确认已安装的 Native App 可以接收 bundle。确保应用的 Native 依赖项与 bundle 的预期相匹配。Capgo Observe 可以标记出正在提供 bundle 的 channel,如果该 bundle 的 Native 包与已安装应用中的包不一致,它会识别出涉及的具体包。

安全性应包含在发布清单中,而非临时的最后审查。请确保 bundle 已签名,且团队明确谁拥有发布权限。Capgo 的 Enterprise 方案提供 ISO 27001 和 SOC 2 Type II 认证,其 code、发布历史、交付率和安全公告均公开透明。

Live Update 有其明确的边界。它们替换的是 Web 层,而非 Native Build 包。不要尝试通过 OTA 发布来添加原生 plugin 或更改应用的权限请求。对于此类变更,请构建并提交新版本。

如果正在评估订阅成本,Capgo 按组织进行计费。按月计费的方案起步价为每月 14 美元,按年计费则为每月 12 美元。14 天无限量免费试用无需信用卡,方便你在投入生产环境前测试发布流程。

核心要点: 将 OTA 视为一种 Web-bundle 的发布路径,而原生层面的变更则通过新 build 来处理。

第 4 步:创建 Channel 并逐步推送更新

利用 channel 来区分 bundle 的接收对象。Channel 是命名的发布路径,例如一个用于内部测试,另一个用于生产环境。这能让团队在面向全体用户前,先通过小范围群体验证变更。

在首次正式发布前设置好 channel 方案。保持命名易于理解,并记录谁有权发布到各个 channel。开发者 channel 可用于团队自测,而生产 channel 则应设有明确的审批环节。

对于高风险变更,请先从一小部分设备开始。Capgo 可以向固定比例的设备推送新 bundle,而其他用户则保留在稳定的回退版本上。由于“粘性分组”会始终分配到其对应的发布队列中,团队可以对同一组用户进行持续对比,而不是在不同用户之间切换。

在开始发布前,先确定触发停止发布的条件。当失败率达到设定的阈值且样本量足够时,Capgo 可以自动暂停发布。请根据本次发布的需求和常规失败模式设置合理的阈值。阈值设置过松可能会导致问题发现过晚;设置过严则可能误停正常的发布。

在变更工单或发布日志中记录发布负责人、bundle 版本、目标 channel 以及暂停规则。如果客服报告了问题,该记录能帮助值班工程师快速识别哪些用户可能接收到了该 bundle。

Channel 设计是发布工作流的一部分,而不仅仅是命名任务。 基于 Channel 的灰度发布 可以实现发布控制。初期请保持计划精简,仅在确实需要测试或部署支持时再增加新的 channel。

专家提示: 在非生产环境的发布中测试暂停条件。确认通知机制是否正常,以及团队接下来的应对流程。

测试组通过后,按计划阶段逐步扩大发布范围。如果失败率上升,请在更多设备接收 bundle 之前及时暂停或回滚。

第 5 步:将 CI/CD 连接到发布工作流

CI/CD 指的是持续集成与持续交付。在移动应用工作流中,它可以构建 web bundle、运行检查,并在通过审核的 code 到达分支后触发发布任务。其核心在于确保每次运行的步骤和顺序都完全一致。

首先列出目前人工操作的步骤。例如,有人可能先合并代码、构建 web app、复制资源、测试结果,最后上传 bundle。将这些动作逐一转化为 pipeline 任务。在团队完全信任自动化检查之前,请在生产环境发布前保留人工审批环节。

选择一个与 code 所在位置以及团队处理 Native Build 方式相匹配的 CI 系统。GitHub Actions、Bitrise 和 Fastlane 都是移动端发布工作流中的常用选项。具体配置取决于你的代码仓库、签名流程和构建环境,因此在连接生产环境凭据前,请先在分支上进行测试。

不要将密钥留在源码文件中。将签名材料和 API 凭据存储在 CI 系统的受保护 Secret Store 中。仅限需要的人员和 Job 访问。一个成功的 pipeline 不应在 logs 中泄露密钥,也不应让每个贡献者都拥有发布生产环境的权限。

将验证过程拆分为清晰的阶段。先运行 web 构建,接着运行覆盖核心页面和应用行为的测试。只有在这些检查通过后,工作流才应准备 OTA bundle 或 Native Build。对于原生层面的变更,则需通过常规的平台构建和应用商店提交流程。

为测试和生产渠道设置独立的 CI job 或审批规则。这样可以防止测试 bundle 被误发布到生产环境。确保将发布日志与 code 版本、bundle 版本及渠道关联起来,以便根据用户反馈追溯到具体的变更。

Capgo 的命令行和 CI upload 流程可以完美融入此 pipeline。首先从自动化测试渠道发布开始。当团队确认版本正确且目标受众已收到更新后,再加入正式的生产环境审批环节。CI/CD、测试和发布管理应当属于同一个工作流。请参阅 移动端 DevOps 工具概览.

自动化应当消除重复的手动步骤,而不是消除责任归属。即使 pipeline 完成了大部分工作,也要为每次生产发布指定一名审核人员。

第 6 步:监控发布并验证回滚准备情况

upload 完成并不意味着发布结束。需要观察 bundle 是否安装成功,以及用户收到更新后 App 是否运行正常。这种视角能帮助团队区分是交付问题还是产品 Bug。

Capgo Observe 可以追踪特定版本和渠道的安装量、失败尝试、采用率及成功率。bundle 上线后,数据会以 5 分钟为间隔进行统计。这让发布负责人能实时观察采用率的变化,而不是只看到一天结束后的汇总报告。

移动端工程师正在监控 Capacitor App 的发布情况,并在回滚前检查更新状态。

设定发布前的核心指标。优先关注失败尝试和成功率,随后对比灰度发布组的采用率。如果 bundle 采用率较低,可能是分发或 App 兼容性问题;如果用户收到更新后失败率上升,请立即暂停并排查,切勿扩大发布范围。

在 App 运行稳定时编写回滚预案(Runbook)。预案应明确谁有权触发回滚、应恢复哪个稳定的 bundle,以及团队如何确认变更已同步至设备。只有明确了触发时机并能验证结果,回滚才有意义。

在安全通道中测试恢复流程。发布一个测试 bundle,确认监控中出现了该版本,然后练习回退到已知稳定的版本。不要等到用户端出现故障时,才去寻找回滚控制台的位置。

发布监控也有助于检查 Native 兼容性。如果 bundle 依赖的某个 package 在已安装的 App 中不存在,团队应能及时发现这种不匹配,而不是将其误认为普通的 Web bug。在扩大发布范围前,请务必检查依赖信息。

确保 Dashboard 专注于能驱动决策的指标。如果一个指标没有负责人或应对预案,那么在发布事故发生时,它将毫无用处。

在每次生产环境推送前,确认稳定的回退方案依然可用,且发布负责人能够访问回滚工作流。随后根据发布数据进行追踪、观察采用情况,并在必要时执行回滚。

常见问题

Capacitor App 可以通过 OTA 更新哪些内容?

当更新不需要新的 Native Build 时,Capacitor 应用可以通过 OTA 接收 Web 层变更。这包括对 Web code、样式或资源的修改。但如果涉及新插件、权限或编译后的原生代码变更,则需要重新构建 App 并发布到应用商店。请在发布清单中明确这一区别。

我需要为 iOS 和 Android 分别构建吗?

是的,你需要分别为 iOS 和 Android 进行平台特定的 Native Build。Web 应用可以共享大部分 code,但每个原生项目都需要使用其平台的工具链进行编译。你可以在 CI/CD 中实现构建自动化,或者在发布流程中使用云端 Native Build 服务。

我可以在 Capacitor 中使用 Angular、React 或 Vue 吗?

可以。Capacitor 支持使用 Angular、React、Vue 或原生 Web code 构建的 Web 应用。先使用框架工具构建应用,然后在编译原生项目之前,将构建好的 assets 复制进去。请务必在真机上测试原生插件,因为浏览器构建无法验证所有设备功能是否正常工作。

Channel 和 Rollback 如何帮助保障发布安全?

Channel 允许你在扩大覆盖范围之前,先将 bundle 推送给特定的用户组。如果发布后的运行状况变差,Rollback 可以让团队快速回退到稳定的 bundle。建议提前设置发布规模和停止条件,并在正式环境依赖该机制前,先在安全的 Channel 中测试恢复流程。

Capgo 提供免费试用吗?

是的。Capgo 提供 14 天无限量免费试用,无需信用卡即可开始。其方案按组织进行订阅。您可以在决定是否符合工作流之前,利用试用期测试 web bundle 的 upload、channel 发布以及 release 监控流程。

总结

先构建 Native Build,在 OTA 和原生变更之间划清界限,然后添加分阶段发布和监控。对于需要通过 channels 进行 Live Update、具备发布可见性和回滚控制能力的团队,Capgo 是理想之选。在首次生产环境发布前,请先开启 14 天免费试用,并在非生产 channel 中测试 bundle。

为 Capacitor 应用提供实时更新

当 Web 层 Bug 已上线时,通过 Capgo 推送修复,不必等 App Store 审核数天。用户会在后台获取更新,而原生变更仍走常规审核流程。

博客最新文章

Capgo 为你提供打造真正专业移动应用所需的深度洞察。