跳过内容

常见问题

如果您在这里找不到答案的提问,请问!既可以提交问题,也可以在 Discord 工作

什么是“code push”?

什么是“code推送”?

Code推送,也被称为“即时更新”(OTA),是一项云服务,允许Capacitor开发者在生产环境中部署应用程序更新。Capgo目前支持Android、iOS和Electron。

“Code推送”是React Native社区中使用的部署功能名称 微软Expo,但它们都没有支持Capacitor。

是否需要将Capgo和CLI的版本匹配到我的插件或Capacitor版本?

Section titled “Do Capgo CLI majors need to match my plugin or Capacitor version?”

不需要。请始终使用最新的Capgo和CLI(npx @capgo/cli@latest)。CLI和Capgo控制台遵循自己的版本管理,并保持与任何支持的更新插件版本兼容。Capgo插件遵循Capacitor版本;请参见 Capgo 版本 为 LTS 标签 @lts-v7.

什么是捆绑包和发布之间的区别?

标题:什么是捆绑包和发布之间的区别?

我们使用“发布”一词来指代为应用商店准备的二进制文件。在稍后生成捆绑包Capgo需要知道被发送到应用商店的二进制文件的确切版本。

我们使用“捆绑包”一词来指代可以应用于发布以更新其为新code的补丁。 npx @capgo/cli@latest bundle upload 命令用于生成捆绑包从您的新本地code然后将其发送给您的用户。

是否有Delta更新文件路径限制?

标题:是否有Delta更新文件路径限制?

是:

  • 零字节文件: The CLI 日志 Ignoring empty file... 并排除空文件从Delta清单。它不会停止上传,所以一个空文件可以改变结果包装而不停止部署。不要在Delta包路径中包含零字节文件。
  • 包含空格的路径: 当一个包路径包含一个空格时,Delta上传会早早失败并显示一个清晰的错误。重命名文件或目录以去除空格,然后上传一个Delta更新。

查看 Delta更新 查看设置详细信息。

__CAPGO_KEEP_0__ https://github.com/orgs/Cap-go/projects

我们的团队也在公开中运作,所以你可以随时看到我们正在工作的内容。我们很高兴通过 Github 问题或 Discord.

是否可以使用 Capgo 与团队一起工作?

标题为“是否可以使用 Capgo 与团队一起工作?”

是!所有计划都支持无限开发者。我们只对每个组织的应用指标(MAU、存储和带宽)进行限制。

查看 团队 更多信息。

是否 Capgo 存储我的源代码 code?

Does Capgo store my source code?

不。Capgo 服务器永远不会看到您的源代码 code。当您运行时 npx @capgo/cli@latest bundle upload, Capgo 将存储一个 zip 文件,其中包含最小化/编译的 code - 与浏览器接收的相同 code,而不是您的源代码 code。

为了额外的安全性,您有两个选项:

  • 端到端加密: 在上传之前对您的包进行加密,以保护其在存储和传输过程中不被泄露,并防止第三方使用您的私钥生成有效的加密更新。这不会使已发布的 Web 资产无法逆向工程,因为公共密钥已包含在分发的应用程序中。
  • 外部 URL 上传: 将包存储在您的服务器上,并仅向 Capgo 提供下载链接并选项 --external <url>

请参阅我们的隐私政策: https://capgo.app/privacy

不是。捆绑文件是公共的Web资源,旨在让您的应用用户下载。任何知道捆绑文件URL的人都可以获取这些文件,Capgo 在设置和文档中告知用户这一点。

访问捆绑文件不被认为是数据泄露。不要将机密信息、凭据、个人数据或受管制数据放入应用捆绑包。如果您需要为高安全性用例提供更强的保密性,请使用端到端加密,但仍然从安全报告的角度将运输的应用code和资产视为公共。

我可以从我的CI系统中使用Capgo吗?

《从CI系统中使用Capgo》

是的。Capgo旨在从CI系统中使用。我们已经发布了一个关于 Android和Github ActionsiOS,以及 GitLab其他 CI 系统应该类似。

如果您遇到任何问题,请不要犹豫,通过 GitHub 或 Discord 联系我们。

如何与 Firebase Remote Config 或 Launch Darkly 相关联?

标题:How does this relate to Firebase Remote Config or Launch Darkly?

Code 推送允许在设备上添加新 code 或替换 code。 Firebase Remote Config 和 Launch Darkly 都是配置系统。它们允许您更改应用程序的配置而无需发布新版本。它们并不是用来替代 code 的。

这个功能会增加多少依赖项的大小?

标题:How big of a dependency footprint does this add?

我们没有最近测量,但我预计 code 推送库将在 Capacitor 应用程序中添加小于 1MB 的大小。我们知道如何使其更小,当这成为优先事项时,我们会这样做。如果大小是一个阻碍,请告诉我们!

Capgo 在 iOS 18.4 Simulator 上不支持。由于 iOS 18.4 Simulator 的上游问题,Capgo 在此环境下无法正常运行。请在真实设备上测试或使用不同的 iOS 模拟器版本。

查看 React Native 的详细信息: facebook/react-native#50510

code push 与大型应用程序是否兼容?

Section titled “code push 与大型应用程序是否兼容?”

是。code push 对应用程序大小没有限制。如上所述 __CAPGO_KEEP_0__ 可以更改您的应用程序中的任何 JS __CAPGO_KEEP_1__,无论大小如何。, Capgo can change any JS code in your application regardless of size.

您可以使用 __CAPGO_KEEP_0__ __CAPGO_KEEP_1__ push 进行什么操作?

Section titled “Capgo code push 可用于什么?”

标题:我可以用 Capgo code 推送的内容?

我们看到各种用途,包括:

  • 紧急修复生产应用程序。
  • 将bug修复发送给使用较旧版本的应用程序的用户。
  • 不断发送(例如每小时)。

注意,大多数应用商店禁止发送 code,该内容会显著改变应用程序的行为。请参阅 以下 内容

A MAU 是一个月度活跃设备。一个在滚动 30 天期间与 Capgo 联系的设备被视为一个 MAU,用于该本地应用 ID。同一物理设备用于两个不同的本地应用 ID,每个应用 ID 都会被计入一次;它们不会在它们之间进行去重。

如果您的风味仅在其 web 层或更新路由上有所不同,请使用一个本地应用 ID 渠道. 这样可以将风味放在一个 Capgo 应用下,发布更简单。使用不同的本地应用 ID 时,风味需要不同的包 ID、签名身份、权限集或商店列表。

在 iOS 上 v7.25.0+ 保留了随机的、应用范围的设备 ID,通过 Keychain 进行正常的重新安装。 在 Android 上,请使用 v7.50.1+ (或 v5.50.1+v6.50.1+ 在那些发布线上,ID只在Android Backup/Restore保留应用偏好时才会恢复。禁用备份、排除这些偏好或清除应用数据会生成一个新的设备ID。更新应用程序不会创建一个新的设备ID。

为了测试和开发构建,关闭生产渠道上的开发构建和模拟器分发。控制分发,而不是MAU:设备仍然可以在联系Capgo时被计算。为了将其排除在生产使用之外,禁用实时更新,并不要调用生产Capgo端点。见 测试原生构建 测试原生构建

原生Capgo无法改变nativecode,例如Java、Kotlin、Objective-C、Swift、原生插件或原生配置。这些更改需要发布一个新的原生应用程序。对于商店审查范围,请参见 应用商店和Google Play政策.

是否可以通过Capgo更新capacitor.config.ts更改?

是否可以通过Capgo更新capacitor.config.ts更改?

No. 短规则: Capgo 可以发送生成的 Web 构建文件夹,包括 HTML、CSS、JavaScript、资产和纯 JavaScript 包裹到输出中。 capacitor.config.ts更改到 npx cap syncnpx cap copy

The Capacitor configuration file is read at native build time and compiled into the native app binary. If you need to change your Capacitor configuration, you must:

  1. The __CAPGO_KEEP_0__ 配置文件在本机构建时间读取并编译到本机应用程序二进制文件中。如果您需要更改您的 __CAPGO_KEEP_1__ 配置,请务必: capacitor.config.ts 更新
  2. 本地npx cap sync 重建您的本机应用程序(
  3. 后跟本机构建)

Capgo Build 可以编译和签署一个准备好的原生 iOS 或 Android 项目,并且当配置时,提交已签名的结果到 App Store Connect 或 Google Play。您可以保留现有的 CI 来处理私有依赖项、Web 构建、Capacitor 同步和自定义原生准备;Capgo 接收已准备好的原生项目用于原生构建步骤。

查看 Capgo Build构建配置参考 了解工作流和应用商店提交选项。

什么是 Capgo 在磁盘上存储的内容以及存储的位置?

Section titled “什么是 Capgo 在磁盘上存储的内容以及存储的位置?”

The Capgo updater (included in your application when you build your app) caches the latest downloaded bundle in the only directory that capacitor allow to load code. On Android, this is located in /data/user/0/com.example.app/code_cache/capgo_updater 尽管该路径的基础由 Android 系统提供并且可以在运行时动态更改。 在 iOS 设备上,数据存储在 Library/Application Support/capgo.

The Capgo 命令行工具(例如 npx @capgo/cli@latest bundle upload) 在磁盘上安装在 npm 缓存中,登录信息存储在您的家目录中在 ~/.capgo.

Capacitor 的热重载是一个开发时特性。 Code 推送是用于生产的。

热重载是 Capacitor 的一个功能,允许您在开发期间更改 code 在设备上。它需要构建 Capacitor 应用程序并使用代理连接到您的本地机器。

Code 推送是一个功能,允许您在生产中更改 code 在设备上。我们将使用各种不同的技术来使其成为可能,取决于平台。

Capgo 可以更改任何 JS code 在您的应用程序中。这包括应用程序 code 和生成的 code. 您还可以更新依赖项 package.json 只要它们不需要原生code更改。

我们没有计划支持原生code (例如 Android 上的 Java/Kotlin 或 iOS 上的 Objective-C/Swift),并且工具将警告您如果它检测到您已更改原生code,因为它将不会包含在捆绑包中。

这个支持 Web 吗?

标题:这个支持 Web 吗?

Code推送对于 Web 不需要,因为 Web 已经以这种方式工作。当用户打开 Web 应用时,它会从服务器下载最新版本,如果需要。

如果您有 Web 上使用code推送的用例,我们很想知道!

这个支持 iOS、Android、Mac、Windows、Linux 等吗?

标题:这个支持 iOS、Android、Mac、Windows、Linux 等吗?

是的。

目前我们主要关注 Android、iOS 和 Electron 的支持,code推送在这三个平台上都已经生产就绪了。

什么操作系统版本 Capgo 支持?

标题:什么操作系统版本 Capgo 支持?

Capgo 支持的 Android 版本与 Capacitor 支持的版本相同。

Capacitor 目前支持 Android API 22+ 和 iOS 13.0+: https://capacitorjs.com/docs/main/reference/support-policy

什么版本的 Capacitor 由 Capgo 支持?

标题:什么版本的 Capacitor 由 Capgo 支持?

Capgo 目前仅支持 Capacitor 的最新稳定版本。我们也可以支持 Capacitor 的较旧版本,但我们还没有建立必要的基础设施来维护这些版本。我们打算在未来支持更多的 Capacitor 版本,包括我们的企业客户的任何版本。 https://github.com/Cap-go/capgo/issues/1100

Capgo 跟踪 Capacitor 的稳定版本,并在稳定版本发布后几小时内进行更新。我们的更新系统是自动化的,更新时间约几分钟。我们还进行了额外的手动验证步骤,最后才发布到我们的服务器上。

如何与应用商店的审查流程或政策相关?

标题:如何与应用商店的审查流程或政策相关?

Capgo 只会将更改推送到 Capacitor 的网页层:HTML、CSS、JavaScript 和在应用的 WebView 中运行的资产。它不会更改原生二进制文件、原生插件、权限、特权、签名或商店元数据。

对于每个原生更改以及可能影响应用目的或功能的材料更改,请使用原生商店发布。保持更新在您提交并向用户透露的应用体验中。

Capgo 是否保证应用商店或谷歌商店的通过?

标题:Capgo 是否保证应用商店或谷歌商店的通过?

不。苹果和谷歌将根据每个应用的具体情况进行审查和发布, Capgo 不能保证个别的通过或审查结果。您的团队仍然负责应用的内容、披露、更新范围和遵守当前商店政策。

为了审查和发布规划,请直接阅读官方政策: 苹果应用商店审查指南Google Play 设备和网络滥用政策.

我可以在我国使用 Capgo 吗?

标题:我可以在我国使用 Capgo 吗?

我们尚未尝试限制任何国家对 Capgo 的访问。

我们认识到一些国家对从该国访问的 URL 有限制。 Capgo 目前使用 Cloudflare 云进行托管,包括 R2 存储和 Cloudflare 工作者。

以下 URL 由 Capgo 使用:

  • https://api.capgo.app — 由命令行工具用于与 __CAPGO_KEEP_0__ 服务器进行交互,以及 __CAPGO_KEEP_1__ 更新器在用户设备上检查更新。 npx @capgo/cli command line tools to interact with the Capgo servers as well as the Capgo updater on users’ devices to check for updates.
  • — 由 — used by the npx @capgo/cli 命令行工具用于上传和下载包

如果您国家的所有这些URL都可访问,那么Capgo应该正常工作。

如果您的地区需要阻止访问任何这些URL,请告知我们,我们可以与您合作找到解决方案。代理服务器是其中一种选择。

是否可以自行托管Capgo?

自行托管Capgo

是。企业版支持在您自己的基础设施中运行更新后端的许可自主托管Capgo部署。请参阅 自主托管更新 了解部署模型和端点。

是否code推送需要联网才能工作?

是否code推送需要联网才能工作?

是的。可以想象一下,通过一个服务器来分发更新,独立于一般的互联网,但某种形式的网络连接是必需的,以便将更新传输到设备上。

网络连接不足对 Capgo 有什么影响?

标题:网络连接不足对 Capgo 的影响

Capgo 更新器(在您使用 Capgo 构建应用程序时,会将其包含在您的应用程序中)旨在对网络连接问题具有抵抗力。

在默认的更新行为中,当应用程序启动时,它会警告 Capgo 更新器,后者会在一个单独的线程中发起一个网络请求到 Capgo 服务器,要求更新。我们故意使用单独的线程,以避免阻塞应用程序可能正在执行的其他任务。如果网络请求失败或超时,更新器将简单地尝试下一次应用程序启动时再次检查。

Capgo 命令行工具(例如 npx @capgo/cli@latest bundle upload]需要网络连接才能正常工作。如果您使用 Capgo 分发应用程序,请确保您的 CI 系统具有网络连接。

如果用户长时间未更新并错过了更新会发生什么?

标题:如果用户长时间未更新并错过了更新会发生什么?

我们的实现始终会向设备发送一个针对该设备的更新,确保请求更新的设备始终处于最新版本。因此,如果用户一段时间内没有更新,他们将会“错过”中间的更新。

更新服务器可以根据您的应用程序的需求,支持响应下一个增量版本或最新版本。请告知我们,如果替代更新行为对您很重要。

Capgo 与 Capacitor 有什么关系?

关于Capgo 与 Capacitor 的问题

Capgo 是一个为 Capacitor 添加 code 推送功能的插件。Capgo 不是 Capacitor 的替代品。您可以继续使用您已经熟悉的 Capacitor 工具。

我们跟踪 Capacitor 的最新稳定版本,并更新我们的 code 推送插件,使其与其兼容。

什么时候会发生更新?

关于什么时候会发生更新?

默认情况下,Capgo 更新器在应用程序启动时检查更新。它在后台线程运行,不会阻塞 UI 线程。任何更新都会在用户使用应用程序时安装,并在下一次应用程序重启时应用。

您也可以使用 Capgo 更新器手动运行 @capgo/capacitor-updater 通过该包,任何时候都可以触发更新,包括通过推送通知。

Capgo 升级器设计得如此,即使网络不可用,服务器下线或无法访问,应用程序也会继续正常运行。您选择从我们的服务器删除更新时,所有客户端都会继续正常运行。

我们添加了回滚补丁的功能。最简单的方法是简单地将之前的包附加到您的频道中来撤销。

不需要。 app_id 包含在您的应用程序中的

是安全的,可以公开。您可以将其添加到版本控制(甚至公开)中,不用担心有人访问它。 app_id can fetch the latest version of your app from Capgo servers, but they cannot push updates to your app or access any other aspect of your Capgo account.

可以从 Capgo 服务器上获取最新版本的应用程序,但他们无法推送应用程序更新或访问您的 __CAPGO_KEEP_1__ 账户的任何其他方面。

关于什么信息会发送到Capgo服务器?

完整的数据清单、API端点行为和隐私控制都在 合规.

设置 statsUrl: '' 来禁用明确的更新统计报告。您还可以将 statsUrl 发送到代理或您控制的端点;参见 在自托管基础设施中处理统计信息。更新检查仍然需要一个应用范围的设备标识符,以便Capgo可以选择正确的更新并衡量每月活跃设备。

子处理器列表 是我们最新的公共真实来源,提供了供应商、处理位置、传输机制和变更历史等信息。

我可以使用Capgo开发HIPAA敏感应用吗?

标题:是否可以使用 Capgo 为 HIPAA敏感应用程序?

是的,但您的合规负责人需要选择正确的部署模型。 Capgo 云目前尚未呈现为 HIPAA 合规的托管统计处理器。默认情况下,更新器数据是设备范围的,并且不与已知应用程序用户相关联,许多团队使用该模型成功。

对于更严格的审查,您可以地理定位插件流量,设置为一个空字符串来禁用统计,仅自主托管统计端点,或者使用许可的自主托管。不要使用电子邮件、用户 ID、患者 ID、员工 ID或任何值来映射更新器遥测数据回个人。 statsUrl 参见 CapacitorUpdater.setCustomId(...) HIPAA 合规

了解完整的技术设置和统计禁用时的可观性权衡。 是否可以在欧洲保留 __CAPGO_KEEP_0__ 实时更新数据? 直接链接到是否可以在欧洲保留 __CAPGO_KEEP_0__ 实时更新数据?

标题:是否可以在欧洲保留 Capgo 实时更新数据?

Can I keep Capgo live update data in Europe?

是的。需要欧盟数据存储的应用程序可以将更新端点设置为欧盟主机,以便于Capgo Cloud 插件流量。

  • updateUrl: https://plugin.eu.capgo.app/updates
  • statsUrl: https://plugin.eu.capgo.app/stats
  • channelUrl: https://plugin.eu.capgo.app/channel_self

使用所有三个EU URL一起,以便更新检查、统计和频道自我赋值使用相同的区域数据路径。因为这些值存储在 capacitor.config.ts,生产移动应用程序需要本机发布才能让现有安装使用新的端点。

查看 数据存储位置 为精确的Capacitor和Electron示例。

目前,Capgo 支持 Android、iOS 和 Electron。所有这些都已准备就绪。

使用Capgo为iOS、Android或Electron进行独立决策。您可以为Android设置渠道策略,并为App Store构建ipa文件,或者为Electron渠道设置所需的频道。

Capgo 可以(相对容易地)支持桌面或嵌入式目标。如果这些对您很重要,请告知我们。

如何Capgo与Play测试轨道或Apple TestFlight进行交互?

名为“如何Capgo与Play测试轨道或Apple TestFlight进行交互?”的部分

每个应用商店都有自己的机制来将应用分发给有限的用户组(例如“内部测试”、“封闭测试”等)。这些都是将用户分段并将特定版本的应用分发到每个组中的机制。

遗憾的是,这些机制中并不是所有的允许第三方检测应用是否安装在特定的测试轨道或通过TestFlight。因此,我们无法可靠地了解这些组的组成,并且无法可靠地根据这些组来控制Capgo补丁的访问。 https://stackoverflow.com/questions/53291007/can-an-android-application-identify-the-test-track-within-google-play https://stackoverflow.com/questions/26081543/how-to-tell-at-runtime-whether-an-ios-app-is-running-through-a-testflight-beta-i

如果您想根据Capgo包的可用性进行分段,共有4个潜在选项:

  1. 建议为每个组使用独立的频道。这是最直接的方法,但需要您管理多个频道。您可能已经有dev频道和prod频道,具有不同的可用性。因此,您可以更新您的dev频道,验证它,然后单独更新您的prod频道。我们建议在版本控制中使用branch / tag来帮助跟踪与每个发布相关的源代码。
  2. 通过 @capgo/capacitor-updater package
  3. Capgo allow creare its own opt-in mechanism on a per-device basis (similar to Test Tracks or TestFlight, just platform agnostic). This allow your QA team to opt-in to bundle before they’re promoted to the general public.
  4. __CAPGO_KEEP_0__允许创建自己的优选机制,基于设备(类似于Test Tracks或TestFlight,只是平台无关)。这使得您的QA团队可以在bundle被推广到公众之前,优选bundle。 使用 渐进式发布 --rollout-percentage-bps 向随机、粘性子集的频道分发候选包。设置从0-100%的发布范围,或者使用

以0.01%的增量发布;配置缓存持续时间从60秒到365天,并可选自动暂停策略。这不选择特定的设备组。

账单

账单部分标题:账单费用和订阅费用(Terms of Service Subscriptions Billing Subtitle)

关于如何升级或降级我的计划?

您可以在您的控制台中随时升级或降级您的计划: https://console.capgo.app/settings/organization/plans

Billing periods are reset automatically every month on the month you first subscribed to Capgo. For example, if you subscribed on the 15th of the month, your billing period will reset on the 15th of every month.

账单周期每月自动重置于您首次订阅的月份。例如,如果您在月份的 15 号订阅,账单周期将在每个月的 15 号重置。 https://console.capgo.app/settings/organization/plans

是否可以预付一年费用?

预付一年费用

是。您可以在组织计划设置中选择年度计费 组织计划设置.

是否会在区域复制时增加存储或带宽?

是否会在区域复制时增加存储或带宽?

关于“区域复制是否会增加存储或带宽?”的常见问题

不。无论服务区域有多少个,存储都只计算一次。Capgo带宽基于从边缘缓存中未缓存的设备下载;缓存服务的传递不计入Capgo带宽使用量。

企业版包括生产平台的99.9%月度可用性承诺。如果承诺未能实现,服务信用计划将根据月度可用性从10%到30%不等。初期支持响应目标为P1:24小时/7天/365天;P2:2个工作日;P3:1个工作日;P4:2个工作日。请阅读 企业版SLA 查看完整条款。

您的仪表板统计数据每晚UTC更新。 统计数据是从不同 月活跃用户数 指的是在过去的 30 天内活跃的用户数。

设备 ID 是如何生成的

设备 ID 是如何生成的

设备 ID 在设备上第一次运行时生成,用于去重设备安装和根据用户安装的设备数量(例如每月活跃用户数)来收费,而不是根据总数或总数的安装。

MAU is a better solution than number of installs to price Capgo, as it is more accurate and reflects the actual cost of Capgo per device.

设备 ID 持久性:

  • iOS: 从 v7.25.0+ 开始,设备 ID 存储在 Keychain 中并在正常重装时保持有效。
  • Android: 使用 v7.50.1+ (或 v5.50.1+/v6.50.1+ 在这些发布线上)。设备 ID 只有在 Android 备份/还原保留应用首选项时才会恢复。
  • Electron设备 ID存储在安全存储中。
  • Android注意事项禁用备份、排除相关首选项或清除应用数据会生成一个新的设备 ID。Android v7.25.0至v7.50.0版本可以在启用备份的情况下重新安装后生成一个新的设备 ID。

设备 ID是应用范围内的,支持实时更新和MAU去重;它不是广告或跨应用跟踪标识符。

设备 ID在应用通过Capgo的更新器或统计端点检查入时列出。设备不需要安装补丁才能出现在设备列表中。

为什么我的设备号与我的MAU不一样?

为什么我的设备号与我的MAU不一样?

设备列表和MAU基于不同的信号。

设备列表显示每个设备的最新已知元数据,例如设备 ID、平台、插件版本、OS版本、原生版本、频道、安装的捆绑包和可用请求国家。请求国家是code处理的最新有效两位Cloudflare,而不是GPS或应用提供的位置。没有有效国家的请求不会清除最后有效值。Capgo更新此元数据时应用检查入,但重复检查入并报告相同元数据可能不会改变行或其最后更新时间。

MAU统计会根据计费时间窗口统计活跃设备的数量。即使设备元数据保持不变,设备的活动也可能会增加,因此设备数量和MAU可能会不同。

How to have different update by platform?

How to have different update by platform?

您可以为每个平台创建一个频道,并在每个频道中禁用平台特定的更新。

在iOS频道中禁用Android更新,在Android频道中禁用iOS更新。

然后将每个频道的包上传以获得每个平台的不同更新。

如果您需要为两个平台使用相同的更新,可以将一个包链接到多个频道。无需重复上传包。

继续阅读FAQ

继续阅读FAQ

如果您正在使用 FAQ 为了计划实时更新的发布,连接它与 Capgo 实时更新 为了产品工作流程在 Capgo 实时更新中 概览 为了概览的实现细节 功能 为了功能的实现细节 更新行为 为了更新行为的实现细节,并且 更新类型 为了更新类型的实现细节。