Capgo Semver 测试工具
根据以 version_build 发送的原生基准版本,检查 Channel 策略的兼容性
“Native Baseline Version” 的含义
Native Baseline Version 是设备向 Capgo 请求 bundle 时,
version_build 作为原生应用版本发送的值。在 Capacitor 应用中,该值可来自
CapacitorUpdater.version 中的 capacitor.config.*。如果未设置该项,插件将回退使用 iOS 或 Android 的原生应用版本。请勿直接将其视为你的 package.json
版本,除非你的 build 过程已将该值复制到 config 或原生元数据中。
Capgo 仍使用 version_name 来确定当前安装的是哪个已下载的 bundle。Channel 的 semver 策略(例如 major, minor,以及
patch 会将远程 bundle 与以下版本进行对比 version_build.
Capacitor 配置
设置 CapacitorUpdater.version 当你希望 App 发送一个明确的版本号时。
优点: 在 iOS 和 Android 构建中保持一致非常简单。
缺点: 如果在 Native Build 发布前忘记更新,过时的配置可能会报告错误的版本号。
原生 App 版本
使用平台版本,例如 iOS CFBundleShortVersionString 或 Android
versionName.
优点: 与用户从 TestFlight、App Store、Play Store 或内部测试安装的二进制文件相匹配。
缺点: 更改此项需要进行 Native Build;如果发布设置发生偏移,不同平台的结果可能会有所不同。
Bundle 目标版本
将其与远程 Bundle 版本、Channel SemVer 规则或元数据上传限制进行对比,例如: --min-update-version。该 Channel 必须使用 --disable-auto-update metadata.
Pro 版: 防止向旧版 App 二进制文件发送需要更新 Native code 的 JavaScript 代码。
缺点: 规则过于严格可能会阻塞有效的更新,直到调整 Channel 或 Bundle 元数据为止。
在此测试器中,请输入设备发送的 Native 基准版本作为 version_build,然后将其与您希望 Capgo 推送的远程 Bundle 版本进行对比。
为什么 Capgo 使用语义化版本控制 (SemVer)
语义化版本规范 是软件开发中最广泛采用的版本管理标准。 通过使用 semver,Capgo 能确保在向您的 Capacitor 应用推送 Live Update 时,兼顾兼容性与安全性。
semver 标准让 Capgo 能够精准识别每次更新包含的具体变更:
- 补丁更新 (Patch, 1.0.0 → 1.0.1): Bug 修复,可安全地自动应用
- 次要更新 (Minor, 1.0.0 → 1.1.0): 新增功能,向下兼容
- 重大更新 (Major, 1.0.0 → 2.0.0): 破坏性变更,需要通过原生应用商店发布
这可以防止 Capgo 向您的原生 code 发送不兼容的更新,从而避免用户遇到崩溃,确保您的应用保持稳定。
灵活的 Semver 策略:超越基础版本管理
虽然 semver 对核心格式有严格要求,但您仍可以通过以下方式根据团队需求进行扩展: pre-release 标识符 以及 构建元数据:
🏷️ 构建元数据 (+) - “装饰性”层
重要提示: 构建元数据不参与版本优先级比较 -
1.2.0+anything 等于 1.2.0 对 Capgo 的更新逻辑而言。
🔧 预发布标识符 (-) - 开发渠道
注意: 预发布版本优先级较低 -
1.3.0-beta.1 < 1.3.0
🎯 混合方案 - 两全其美
Semver 实际应用场景与团队策略
🚀 初创公司 / 快速迭代
0.1.0 - 首个 MVP 版本0.2.0-beta.1 - 新功能测试0.2.0+ui.v2 - UI 改版元数据1.0.0 - 生产环境就绪1.0 前使用 0.x.x,用元数据追踪设计
🏢 企业级 / 受监管行业
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 → 紧急 Bug 修复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 → Staging 环境部署1.4.0+prod.final.789 → Production 环境部署结合部署元数据的自动化版本管理
- 使用 build 元数据 (+) 进行追踪、记录时间戳或不影响兼容性的修饰信息
- 使用 pre-release 标识符 (-) 为需要不同更新优先级的开发渠道设置版本
- 结合两者以获得最大的灵活性:
1.2.0-beta.1+ui.dark.theme.20240315 - 请记住:Capgo 遵循 semver 优先级规则,因此请据此规划你的 channel 策略
有效的语义化版本
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 ✗ 缺少 patch 版本号 1.0.0.0 ✗ 版本号段过多 1.0.0- ✗ 预发布版本为空 1.0.0+ ✗ 构建元数据为空 Capgo 更新行为
本工具遵循官方的 Semantic Versioning 规范 与 npm 的实现方式不同。