跳转至正文
教程

Capgo 中的版本机制是如何工作的

了解 Capgo 如何管理你的 Capacitor 应用中的版本,并充分利用这一机制。了解 major、minor 和 patch 的含义。

Capgo Capgo 中的版本机制 | 博客配图

Capgo 使用两个主要变量来管理您的 Capacitor 应用版本:

  • 原生版本
  • JavaScript 版本
Capacitor 更新系统

所有版本选择均由 Capgo 在服务端决定。

版本管理系统

要管理版本 Capgo,请使用 SemVer 系统。阅读 SemVer 规范 或检查 Capgo 的更新兼容性,使用 Semver 测试器.

版本

在哪里找到要比较的版本(Capgo)

你可以通过在以下位置设置 version 键来覆盖此行为: capacitor.config.json 文件 文档见此处 所有平台的原生版本都将被忽略。

iOS

在 iOS 中,该变量在项目的这个位置设置 ios/App/App/Info.plist 对应键下CFBundleShortVersionString 或 ios/App/App.xcodeproj/project.pbxproj 对应键下 MARKETING_VERSION 如果 MARKETING_VERSION 已在你的项目中设置 Info.plist 文件。

Android

在 Android 中,该变量在项目的这个位置设置 android/app/build.gradle 对应键下 defaultConfig.versionName

JavaScript ( Capgo bundle 版本 )

在 JavaScript 中,这个 var 可以设置在 package.json 对应键下 version 否则你需要在 upload 命令中提供它。

默认行为

如果你没有更改任何设置,Capgo channel 的行为如下。

此行为将基于你设为默认的 channel。

当你的 Capacitor 应用全新安装时

当用户首次下载并打开你的 Ionic 应用时,它会连接 Capgo 服务器。

目前,可能会出现以下 4 种输出结果:

  • 原生 bundle 版本 (1.2.3) 低于 Capgo bundle 版本 (1.2.4),Capgo 会向用户推送其 bundle。
  • 原生 bundle 版本 (1.2.3) 等于 Capgo bundle 版本 (1.2.3),Capgo 会返回“无需更新”。
  • 原生 bundle 版本 (1.2.4) 高于 Capgo bundle 版本 (1.2.3),Capgo 会返回“无需更新”。
  • 原生 bundle 版本 (1.2.3) 的主版本号低于 Capgo bundle 版本 (2.2.3),Capgo 将发送“无需更新”。

其他设置

禁用原生环境下的自动降级

如果将此设置更改为 false,Capgo 将始终被视为版本的可信来源。 此时行为变为:

  • 原生版本 (1.2.4) 高于 Capgo 版本 (1.2.3)

Capgo 向用户发送其版本。

禁用自动升级策略

您可以从几种策略中进行选择。了解更多详情 这里

JavaScript bundle 版本

JavaScript bundle 版本是您在执行时发送的版本 npx @capgo/cli@latest bundle upload --channel production

如果您未使用该选项 --bundle 1.2.3,Capgo 将从您的 package.json 文件(version 键)中获取 bundle 版本。

当您的 Ionic 应用从 Capgo 安装了一个版本后,该版本将用于比较:

  • 如果其 JavaScript bundle 版本 (1.2.3) 低于 Capgo 的 bundle 版本 (1.2.4),Capgo 会将 bundle 发送给用户。

附带一些保护条件:

  • 如果原生 bundle 版本高于 Capgo 的版本, Disable auto downgrade under native 则应用该条件。
  • 如果原生 bundle 版本比 Capgo 版本低 MAJOR 级别,则 Disable auto upgrade above major 则应用该条件。

应用商店更新

当你在 App Store 发布你的 Capacitor JS 应用时,过程很简单。

默认情况下,用户会从商店获取新版本,并移除应用中的所有本地更新。

如果你想改变这种行为,需要设置 resetWhenUpdate 了解更多 这里

此设置只能在应用端修改,无法像其他设置那样从云端修改。

其他设置

在上述行为之上,你还可以针对特定 deviceID 设置更具体的规则。

在 Capgo 中,你可以决定为每个 deviceID 覆盖默认行为。

您可以将一个 deviceID 关联到:

  • 特定的 bundle 版本
  • 特定的 channel

这将绕过上述所有设置。

在下方文章中了解更多。

继续阅读 Capgo 中的版本工作原理

如果你正在使用 Capgo 中的版本机制是如何工作的 要规划原生插件工作,请将其与 Capgo 插件目录 查看 Capgo 插件目录中的产品工作流, Capgo 提供的 Capacitor 插件 查看由 Capgo 提供的 Capacitor 插件中的实现细节, 添加或更新插件 查看添加或更新插件中的实现细节, Ionic Enterprise 插件替代方案 查看 Ionic Enterprise 插件替代方案中的产品工作流,以及 Capgo Native Build 查看 Capgo Native Builds 中的产品工作流。

为 Capacitor 应用提供 Live Updates

当 Web 层出现线上 Bug 时,通过 Capgo 发布修复,而不用等 App Store 审核好几天。用户会在后台收到更新,原生变更则仍走正常审核流程。

博客最新动态

Capgo 为你提供打造真正专业的移动应用所需的最有价值的洞察。