跳过主要内容
教程

如何让Capgo保持更新的轻量和快速

一份实用的Capgo指南:如何通过delta包、基于频道的发布、原生基线刷新、PR预览和直接更新保护来实现更小、更安全的实时更新

文章来源

马丁·多纳迪

作者

瓦莱里亚

审稿人

乔丹

编辑

如何让Capgo保持快速和轻量

最好的live update是用户几乎察觉不到的

通常意味着三件事:

  1. 下载很小
  2. 滚动控制
  3. 恢复立即发生

The same “keep OTA lean” advice that works in React Native land also applies to Capgo. The difference is that Capgo gives Capacitor teams a few extra levers: 相同的“保持OTA轻量”建议在React Native领域也适用于__CAPGO_KEEP_0__。区别在于__CAPGO_KEEP_1__为__CAPGO_KEEP_2__团队提供了几个额外的杠杆:, 增量更新, 频道, 版本目标, 和可选 端到端加密.

如果您同时使用这些功能,会得到更小的数据包、更快的安装和更少的运维杂乱。

瘦身也很重要,即使MAU保持不变

一个有用的Capgo-特定细节:Capgo MAU实际上是指过去 30 天内联系更新服务的月度活跃设备数量。

瘦身主要不是为了减少MAU计数。它更重要,因为它改善了用户和团队实际感受到的部分:

  • 在移动网络或弱 Wi-Fi 上更快的下载
  • 更好的体验 直接更新
  • 在失败或回滚的发布时节省的带宽
  • 在测试或发布阶段更小的爆炸半径

让Capgo更新保持快速、安全和高效。

1. 默认使用Delta更新

如果你只做一件事,那就做这个。

Capgo的 Delta更新 发送仅变更的文件,而不是重新下载完整的Web包。这是OTA性能的最大单一优势。

bun run build
bunx @capgo/cli@latest bundle upload --channel staging --delta

当你的QA测试完成后:

bunx @capgo/cli@latest bundle upload --channel production --delta

如果你想让CI保持严格,使用 --delta-only 这样就不会有人意外地回退到全包上传:

bunx @capgo/cli@latest bundle upload --channel production --delta-only

仅使用 --delta-only 当你的生产设备支持Delta更新时。混合插件版本的设备,如果不支持基于清单的Delta传递,无法下载更新。

这尤其重要,如果你使用 directUpdate因为用户可以看到“更新发现”和“应用重新加载”之间的时间变得可见。

2. 将资产视为资产,而不是 JavaScript 包袜子。

2. 对待资产像对待资产一样,而不是 JavaScript 包袜子。

2. 对待资产像对待资产一样。

  • 3. 对待资产像对待资产一样。
  • 在您的自有CDN或API中保存频繁变化的内容,如果不需要将其嵌入到已打包的应用程序中。
  • 3. 对待资产像对待资产一样。
  • 3. 对待资产像对待资产一样。

This is one of the easiest ways to keep Capgo fast as your app grows. The worst pattern is a tiny UI fix that forces users to download a pile of unrelated media.

3. 对待资产像对待资产一样。

Capgo updates the web layer: HTML, CSS, JavaScript, and assets loaded at runtime.

3. 对待资产像对待资产一样。

  • 保持 Capgo 更新的最佳实践
  • 任何修改 iOS 或 Android 原生项目状态的内容
  • capacitor.config.ts changes,
  • 故意使用两个发布通道:

原生通道

用于插件更改、权限更改和原生配置:

然后发布一个正常的商店版本。

__CAPGO_KEEP_0__ 通道

bun run build
bunx cap sync

用于安全的 web 层迭代:

Capgo 通道

保持 Capgo 更新的最佳实践

bun run build
bunx @capgo/cli@latest bundle upload --channel production --delta

Also refresh your native baseline regularly if you recently added a lot of long-lived assets. A fresh store build embeds that new baseline, which keeps future Capgo diffs smaller.

4. 使用频道来保持更新的大小小

一个“瘦身”更新不仅仅是关于兆字节。它也关于在你知道它是好的之前,更新如何传递给多少台设备。

Capgo’s 频道系统 是控制这一点的最干净的方式:

  • staging QA
  • beta 邀请测试者
  • production 所有人
  • hotfix 紧急恢复

一个简单的流程如下:

  1. 上传到 staging.
  2. 在真实设备上验证。
  3. 逐步发布,无论是通过控制通道还是按百分比发布。
  4. 如果健康指标下降,立即回滚。

如果您的应用程序在野外有多个本机基线,建议将通道与 版本目标配对。这样可以将不兼容或不必要的包从旧版二进制文件中排除。

对于那些希望更紧密的审查循环的团队,Capgo也适用于 PR预览。这样可以让产品、QA和利益相关者测试仅限JS的更改,而不必等待新的TestFlight或Play内部构建。

5. 如果您启用直接更新,优化启动硬件

启动路径越快,更新应用的速度越快,启动路径就越需要严格控制。

Capgo的 更新行为 docs 强烈建议配对 directUpdate 与 Delta 更新一起使用。 这是正确的默认设置。

第二个防护栏是 notifyAppReady().

import { CapacitorUpdater } from '@capgo/capacitor-updater'

CapacitorUpdater.notifyAppReady()

如果您的应用程序在默认的10秒内没有报告就绪 notifyAppReady() Call appReadyTimeout you set in your Capacitor config, Capgo can mark that bundle invalid and restore the previous good version. That rollback behavior is what you want in production, but it also means you should keep startup clean:

  • Call notifyAppReady() 如果您重新加载,则仔细保存和恢复应用程序状态
  • 在低端设备和糟糕网络场景下进行测试,之前广泛部署
  • 如果您最近没有查看过,请
  • docs 强烈建议配对

与 Delta 更新一起使用。 这是正确的默认设置。 如何让Capgo更新保持快速和高效 notifyAppReady指南

值得重新阅读。

6. 使用内部更新通道而不是不必要的原生重建

很多移动团队浪费时间为明显是web-only的变化构建二进制文件。

  • 如果变化是:
  • 代码复制
  • UI细化
  • 引导流程
  • 定价屏幕逻辑
  • 分析连接
  • 快速渲染或API响应。

然后一个 Capgo 更新通常是更快的审查文档。

这意味着少了原生重建、TestFlight 的频繁更新和团队的更紧密的反馈循环。它是 Capgo 中最不被利用的好处之一:您可以将审查和QA 工作移到 OTA 通道中而不破坏原生/网页边界。

我们的指南是关于 使用一个移动应用 ID 进行分期 的实用方法。

7. 将瘦身和密钥分开

小型包和安全包解决不同的问题。

通道控制资格。它们自己并不使包文件保密。

如果您需要更强的交付保证:

这并不意味着更新大小无关紧要。它只是意味着您应该优化两方面的尺寸:

  • 以速度为主
  • 以加密为主
  • 以渠道为主
  • 以回滚为主

实用的“以速度为主Capgo”工作流

如果您想要一个简单的默认操作模型,请使用以下内容:

  1. 将原生和OTA发布分支分开。
  2. 上传JS更改时 --delta 默认情况下使用
  3. 使用 staging 和 beta 在 production.
  4. 观看 更新统计和日志 在发布后,而不是仅仅在发布前。
  5. 将PR转换为可安装的预览,当原生构建是多余的时。
  6. 将大型、频繁变化的媒体尽可能地从捆绑包中排除。
  7. 在主要资产增长或原生变化后刷新原生基线。
  8. 将 notifyAppReady() 和回滚行为视为发布工程的一部分,而不是设置的琐碎事项。

这种组合比常见的“仅上传改变的内容”方法保持速度更长时间。

结尾思考

对于Capgo团队来说,“瘦身”和“快速”不仅仅是包大小的问题。

这是一种发布设计问题。

使用Delta更新来减少包大小,使用渠道来减少发布大小,使用回滚来减少失败大小。 一旦您以这种方式思考OTA,更新就始终保持快速,即使应用程序、团队和用户基数都在增长。

继续阅读《如何让Capgo更新保持快速和轻便》

如果您正在使用《如何让__CAPGO_KEEP_0__更新保持快速和轻便》 《如何让Capgo更新保持快速和轻便》 规划渠道路由和分阶段发布时,连接它与 渠道 渠道 渠道 渠道 频道 对于频道的实现细节 Beta 测试解决方案 对于Beta 测试解决方案的产品工作流程 版本目标解决方案 对于版本目标解决方案的产品工作流程

Capacitor apps实时更新

When a web-layer bug is live, ship the fix through Capgo instead of waiting days for app store approval. Users get the update in the background while native changes stay in the normal review path.

当web层bug出现时,通过__CAPGO_KEEP_0__直接将修复推送给用户,而不是等待几天的app store审批。用户在后台接收更新,而native层的更改仍在正常审批路径中。

人性化支持

立即开始

Capgo gives you the best insights you need to create a truly professional mobile app.