__CAPGO_KEEP_0__ 实时更新 - __CAPGO_KEEP_1__ 云

Capgo Semver Tester

检查频道策略与本地基线的兼容性

本地版本发送到Capgo作为version_build,来自配置或本地应用元数据。

高级设置

输入两个语义版本以查看比较

什么是 "本机基线版本" 的含义

本机基线版本是 Capgo 将本机应用程序版本发送给设备的版本号 version_build 当设备要求更新服务器获取一个捆绑包时,版本号来自 Capacitor 应用程序中的 CapacitorUpdater.versioncapacitor.config.*。如果该设置未设置,则插件将回退到 iOS 或 Android 的本机应用程序版本。不要假设它是你的 package.json 版本,除非你的构建将该值复制到配置或本机元数据中。

Capgo 还使用 version_name 了解当前已安装的下载包是哪一个。 major, minorpatch 比较远程包 version_build.

Capacitor 配置

设置 CapacitorUpdater.version 当您希望应用程序发送一个明确的版本时。

优点: 易于在 iOS 和 Android 构建之间保持一致。

缺点: 如果忘记在原生发布前更新配置,过时的配置可能会报告错误的版本。

原生应用程序版本

使用平台版本,如 iOS CFBundleShortVersionString 或 Android versionName.

优点: 与 TestFlight、App Store、Play Store 或内部测试中安装的二进制文件匹配。

缺点: 更改它需要原生构建,并且如果发布设置发生漂移,可能会在不同平台上有所不同。

Bundle 目标

与远程 Bundle 版本、渠道 SemVer 规则或元数据上传约束(例如 --min-update-version该渠道必须使用 --disable-auto-update metadata.

优点: 防止向旧应用二进制文件发送需要新 native code 的 JavaScript。

缺点: 过于严格的规则可能会阻止有效的更新,直到渠道或 Bundle 元数据被调整为止。

对于这个测试者,输入设备发送的本地基线 version_build然后与您希望Capgo传递的远程包版本进行比较。

为什么Capgo使用语义版本

语义版本 语义版本是软件开发中最广泛采用的版本控制标准。 通过使用semver,Capgo确保了在向您的Capacitor应用传递实时更新时兼容性和安全性。

语义版本标准允许Capgo了解每个更新中包含的具体变化:

  • 补丁更新(1.0.0 → 1.0.1): 修复bug,安全自动应用
  • 次要更新(1.0.0 → 1.1.0): 新功能,向后兼容
  • 重大更新(1.0.0 → 2.0.0): 破坏性更改,需要本机应用商店发布

这可以防止Capgo向您的本机code发送不兼容的更新,保护您的用户免受崩溃的影响,并确保您的应用程序保持稳定。

超越基本版本控制:灵活的Semver策略

虽然semver对其核心格式非常严格,但您可以使用 预发布标识符构建元数据:

🏷️构建元数据(+)- 美观层

1.2.0+20240315.142530
用于部署跟踪的时间戳
1.2.0+ui.refresh.dark-mode
UI更新描述
1.2.0+build.4729.commit.a1b2c3d
CI/CD构建号和git提交

注意: 在版本顺序中,构建元数据将被忽略 - 1.2.0+anything 等于 1.2.0 用于 Capgo 的更新逻辑.

🔧 预发布标识符(-)- 开发频道

1.3.0-beta.1
测试beta频道
1.3.0-hotfix.payment
紧急修复 branch
1.3.0-feature.newapi
功能分支测试

注意: __CAPGO_KEEP_0__ 1.3.0-beta.1 < 1.3.0

__CAPGO_KEEP_0__

__CAPGO_KEEP_0__
__CAPGO_KEEP_0__

__CAPGO_KEEP_0__

__CAPGO_KEEP_0__

0.1.0 __CAPGO_KEEP_0__
0.2.0-beta.1 __CAPGO_KEEP_0__
0.2.0+ui.v2 __CAPGO_KEEP_0__
1.0.0 __CAPGO_KEEP_0__

在 1.0 之前使用 0.x.x 版本,用于设计跟踪的元数据

__CAPGO_KEEP_0__

2.1.0 → 季度发布
2.1.1+sec.patch.cve2024 → 安全补丁跟踪
2.2.0-rc.1+audit.ready → 预审发布候选

严格遵循 Semver 的兼容性元数据

🎮 游戏/创意应用

1.0.0+season.winter.2024 → 季节性内容
1.1.0+event.halloween → 事件驱动功能
1.2.0+assets.hd.remaster → 资产更新

内容跟踪的创意元数据

⚡ 热修复策略

1.2.0 → 当前生产
1.2.1-hotfix.payment → 严重错误修复
1.2.1+urgent.20240315.1430 → 使用时间戳发布

预发布用于测试,部署跟踪的元数据

🌍 多平台战略

1.3.0+ios.optimized → iOS专属优化
1.3.0+android.material3 → Android设计更新
1.3.0+web.pwa.ready → PWA功能

同一版本,平台特定的元数据

🔄 CI/CD集成

1.4.0-alpha.1+build.123 → 自动预发布
1.4.0+deploy.staging.456 → 阶段性部署
1.4.0+prod.final.789 → 生产部署

自动化版本管理与部署元数据

💡 Pro Tips:
  • 使用构建元数据(+)来跟踪、时间戳或外观信息,这些信息不会影响兼容性
  • 使用预发布标识符(-)来跟踪开发频道,需要不同更新顺序
  • 结合两者以获得最大灵活性: 1.2.0-beta.1+ui.dark.theme.20240315
  • 请记住:Capgo 遵循语义版本号的顺序规则,因此请根据您的频道策略规划

重要提示:Capgo 使用严格的语义版本号

与npm 的语义版本号实现不同,Capgo 严格遵循 SemVer 规范。npm 的 node-semver 有已知的规范偏差,这可能导致意外行为

例如,npm 将版本号 1.0.0-alpha.1 与规范所需的方式不同。请参阅我们的 已报告的问题 上述修正方案 那从未被合并的。

有效语义版本

1.0.0 ✓ 标准发布
2.1.3-alpha ✓ 预发布
1.0.0-beta.1 ✓ 带有数字的预发布
1.0.0+build.1 ✓ 构建元数据
1.0.0-rc.1+build.1 ✓ 完整版本

无效语义版本

v1.0.0 ✗ 不允许带有 'v' 的版本号
1.0 ✗ 缺少修订版本
1.0.0.0 ✗ 版本号部分过多
1.0.0- ✗ 空的预发布
1.0.0+ ✗ 空白构建元数据

Capgo 更新行为

小版本策略允许在同一主版本.次版本线上进行修订版本的更改,例如 1.0.0 -> 1.0.1
修订策略阻止 1.0.0 -> 1.0.1。它只允许修订版本的后缀更改,如 1.0.0-beta.1 -> 1.0.0-beta.2
主版本策略阻止目标捆绑包的主版本高于原生基线,例如 1.0.0 -> 2.0.0
降级保护使用全面的语义版本顺序,因此稳定 1.0.0 比 1.0.0-beta.2 新

本工具遵循官方 语义版本规范 与 npm 的实现不同