跳过主要内容
教程

如何让Capgo保持快速和轻量

实用指南:如何让Capgo保持快速和轻量:delta包、基于频道的发布、原生基线刷新、PR预览和直接更新防护

马丁·多纳迪厄

马丁·多纳迪厄

内容营销人员

如何让Capgo保持快速和轻量

最好的实时更新是用户几乎察觉不到的。

通常意味着三个事情:

  1. 下载量小
  2. 更新控制
  3. 如果出现问题,恢复速度极快

同样的“OTA瘦身”建议在React Native领域有效,也适用于Capgo。不同之处在于Capgo为Capacitor团队提供了几个额外的杠杆: 增量更新, 频道, 自动回滚, 版本目标以及可选的 端到端加密.

如果您同时使用这些,您将获得更小的负载、更快的安装和更少的操作混乱。

MAU 不变时,瘦身仍然很重要

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

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

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

瘦身更新真正是关于速度、安全性和操作纪律。

1. 默认使用 Delta 更新

如果您只做一件事,这就是它。

Capgo’s 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包裹

OTA包静默地变得臃肿,尤其是对于大型资产。

一些实用的规则:

  • 不要在 JavaScript 中内联大图像或媒体,如果可以的话使用普通资产文件。
  • 如果不需要将其放入已打包的应用程序包中,请将频繁更改的内容保留在自己的 CDN 或 API 中。
  • 对于每次发布都会更换的营销图像、引导视频和一次性活动资产,请小心。
  • 让稳定的资产保持稳定。通过 Delta 更新,未变更的文件会重用而不是重新下载。

这是在您的应用程序增长时保持 Capgo 快速的最简单方法之一。最糟糕的模式是微小的 UI 修复,迫使用户下载一堆无关的媒体。

3. 保留真实的本机更改

Capgo 更新 web 层:HTML、CSS、JavaScript 和在运行时加载的资产。

这不是正确的渠道:

  • 新本机插件
  • 权限更改
  • capacitor.config.ts 变更
  • iOS 或 Android 原生项目状态的任何修改。

这条线对性能也很重要。如果您不断将重大结构性变化推入 OTA 通道中,那么您的更新策略会变得越来越重且风险越来越大。

故意使用两个发布通道:

原生通道

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

bun run build
bunx cap sync

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

Capgo 通道

对于安全的 web 层迭代:

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

另外,如果您最近添加了大量长期存活的资产,请定期刷新您的原生基线。一个新的商店构建会将该新基线嵌入其中,这样将来 Capgo 的差异会更小。

4. 使用渠道来保持发布规模小

一个“瘦身”更新不仅仅是关于兆字节。它也与在知道它好之前更新多少台设备有关。

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

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

一个简单的流程看起来像这样:

  1. 上传到 staging.
  2. 在真实设备上验证。
  3. 逐渐发布,是否通过控制的渠道或基于百分比的发布。
  4. 如果健康指标下降,立即回滚。

如果您的应用程序在野外有多个本地基线,使用渠道与 版本目标. 这样可以避免向旧版二进制文件推送不兼容或不必要的包。

对于希望有更紧密的审查循环的团队,Capgo也非常适合 PR预览. 这样产品、QA和利益相关者就可以在等待新版TestFlight或Play内部构建之前测试JS-only更改。

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

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

Capgo的 更新行为 文档明确建议将其与Delta更新配对。 这是正确的默认值。 directUpdate 第二个防护栏

__CAPGO_KEEP_0__ notifyAppReady().

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

CapacitorUpdater.notifyAppReady()

If your app does not report ready within the default 10-second window, or within whatever you set in your __CAPGO_KEEP_0__ config, __CAPGO_KEEP_1__ 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: 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:

  • 避免在关键路径中进行慢速启动时间工作 notifyAppReady() 如果您立即重新加载应用程序,请小心保存和恢复应用程序状态
  • 在广泛推出之前测试坏网络和低端设备场景
  • 如果您最近没有查看它,
  • notifyAppReady 指南

值得重新阅读。 6. 使用内部更新通道而不是不必要的本机重建 6. 使用内部更新通道而不是不必要的本机重建

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

许多移动团队浪费时间构建二进制文件来处理明显是web-only的更改。

如果更改是:

  • 复制
  • UI细化
  • 入门流程
  • 价格屏幕逻辑
  • 分析连接
  • 功能标志
  • 提示或API响应渲染

那么一个Capgo更新通常是更快的审查文档。

这意味着少了native重建,减少了TestFlight的混乱,团队的反馈循环更紧密。它是Capgo中最不被利用的好处之一:您可以将审查和QA工作移到OTA通道中,而不会打破native/web边界。

我们的指南 预发布环境使用一个移动应用程序ID 涵盖了保持此项清洁的实用方法。

7. 将瘦身和密钥分开

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

通道控制资格。它们本身不会使捆绑包保密。

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

这并不意味着更新大小无关紧要。它只是意味着您应该优化两种维度:

  • 为了速度而精简,
  • 加密的传输控制,
  • 渠道控制,
  • 回滚恢复.

实用的“精简Capgo”工作流程

如果您想要一个简单的默认运营模型,请使用此:

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

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

结尾的思考

对于 Capgo 团队,“瘦身和快速”不仅仅是一个捆绑包大小的问题

它是一个发布设计问题

使用Delta更新减少数据包大小,使用频道进行滚动部署,使用回滚进行失败部署。 一旦您以这种方式考虑OTA,应用程序、团队和用户基数越大,更新速度也会越快。

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

如果您正在使用 《如何让Capgo更新保持轻快》 来规划频道路由和阶段性部署,连接它与 Channels Channels Channels Channels Beta测试解决方案 Channels Channels for the product workflow in Beta Testing Solution, and Version Targeting Solution for the product workflow in Version Targeting Solution.

实时更新Capacitor应用

当web层bug处于活跃状态时,通过Capgo将修复推送给用户,而不是等待几天的应用商店审批。用户在后台接收更新,而原生变化保持在正常的审批路径中。

立即开始

最新博客文章

Capgo 为您提供创建真正专业移动应用所需的最佳见解。