跳转至正文

Capacitor 应用中的版本标记

了解 Capacitor 应用中版本标记的核心知识,包括更新、同步与自动化的最佳实践。

Capacitor 应用中的版本标签 Capgo 博客插图

版本标签对于管理 Capacitor 应用至关重要。它确保更新顺畅,跟踪变更,并提升 iOS、Android 和 Web 平台上的应用可靠性。以下是快速概览:

  • 为什么这很重要:跟踪更新,支持回滚,确保部署稳定。
  • 语义化版本规范:使用 主版本号.次版本号.修订号 用于表示破坏性变更、新功能或 Bug 修复。
  • 跨平台同步:在以下平台对齐版本号: package.jsoniOS Info.plist、Android build.gradle.
  • 自动化: 自动更新 使用 npm 脚本和 CI/CD 工具。
  • Capgo Live Updates:像 Capgo 在 24 小时内向 95% 的用户推送更新。
  • Beta 版本管理: 使用结构化渠道管理 alpha、beta 和生产版本。

快速对比

功能 用途 示例
语义化版本规范 清晰追踪变更 1.2.3 → 2.0.0
同步版本 跨平台保持一致 npx cap sync
自动化 加速版本更新 npm version patch
Capgo Live Updates 用户快速采用 Capgo 24 小时内 95%
Beta 频道 受控测试阶段 1.3.0-beta.1

版本标签简化了 应用更新,让用户满意,并确保开发者能有效管理发布。

如何自动配置您的 Capacitor 项目 ⚡️

Capacitor 框架文档网站

在 Capacitor 中设置版本

请遵循以下步骤,确保在您的 Capacitor 应用中跨所有平台实现一致的版本管理。

在 package.json

本指南中介绍的 package.json 文件中设置应用版本信息。以下是配置示例:

{
  "name": "your-app-name",
  "version": "1.2.3",
  "private": true,
  "dependencies": {
    "@capacitor/core": "5.5.0",
    "@capacitor/ios": "5.5.0",
    "@capacitor/android": "5.5.0"
  }
}

更新版本号时,请遵循语义化版本(SemVer)规则:

  • 主版本号 (1.x.x):引入不兼容的变更。
  • 次版本号 (x.2.x): 新增向后兼容的新功能。
  • 补丁版本 (x.x.3): 修复 Bug 或进行小幅改进。

保持各平台版本同步

为了确保应用部署顺畅,统一所有平台的版本号至关重要。每个平台都有各自的版本配置文件:

平台 配置文件 版本键
iOS Info.plist CFBundleShortVersionString
Android build.gradle versionName
Web 端 package.json 版本

在更新 package.json中的版本后,使用此命令将更改与原生平台配置同步:

npx cap sync

使用 Capacitor CLI 进行版本管理

Capacitor CLI 提供了有用的命令来管理版本:

# Check the current version of Capacitor
npx cap --version

# Update Capacitor core and platform dependencies
npm install @capacitor/core@latest
npm install @capacitor/ios@latest
npm install @capacitor/android@latest

# Sync version changes to native platforms
npx cap sync

保持 Capacitor CLI 更新可确保与特定版本功能的兼容性,并减少潜在的不匹配。遵循这些步骤有助于在应用中维护正确的版本控制。

语义化版本设置

语义化版本基础

语义化版本 (SemVer) 采用如下格式 主版本号.次版本号.修订号,其中每一部分代表特定类型的变更:

版本组成部分 用途
大版本 对 API 引入破坏性变更
次版本 新增与旧版本兼容的新功能
修订版本 在不破坏兼容性的前提下修复 Bug 或优化性能

该系统确保开发者能够清晰传达更新内容,同时保持跨应用版本的兼容性。例如,从 1.2.3 改为 2.0.0 表示重大破坏性更新,需要仔细规划。

何时更新版本号

以下是决定更新哪个版本号的依据:

更新类型 使用场景 版本变更示例
主版本更新 适用于破坏性 API 变更或重大 UI 重构 1.2.3 → 2.0.0
次版本更新 引入新功能或标记功能弃用时 1.2.3 → 1.3.0
补丁更新 用于修复 bug 或小幅性能优化 1.2.3 → 1.2.4

“我们采用敏捷开发,@Capgo 对于向用户持续交付至关重要!” —— Rodrigo Mantica [1]

现在来看看如何自动化这些更新,从而简化发布管理。

版本更新自动化

自动化版本更新 可以节省时间并减少 Capacitor 项目中的错误。以下是设置步骤:

  1. NPM 版本脚本

将这些脚本添加到你的 package.json 文件中,即可轻松管理版本更新:

{
  "scripts": {
    "version:patch": "npm version patch",
    "version:minor": "npm version minor",
    "version:major": "npm version major"
  }
}
  1. CI/CD 集成
    将版本更新集成到你的 CI/CD pipeline 中。Capgo 支持以下工具: GitHub 操作, GitLab CI,以及 Jenkins,让流程自动化变得简单。

“@Capgo 是开发者提升效率的必备工具,可跳过冗长的 bugfix 审查。” - Bessie Cooper [1]

版本标签方法

Git 版本标签

Git 版本标签是跟踪……的可靠方式 Capacitor 应用发布。要创建清晰且信息丰富的标签,请将语义化版本控制与简短描述相结合:

git tag -a v1.2.3 -m "Release v1.2.3: Added offline mode support"

为了保持团队的一致性,请使用标准化的标签格式:

标签组件 格式 示例
发布版本 v[主版本].[次版本].[修订号] v1.2.3
Beta 版本 v[VERSION]-beta.[NUMBER] v1.2.3-beta.1
候选版本 v[VERSION]-rc.[NUMBER] v1.2.3-rc.2

集成 Build Number

Build number 用于追踪每个版本中的各个构建。iOS 和 Android 都应在每次提交时递增 build number:

{
  "ios": {
    "version": "1.2.3",
    "build": "10234"
  },
  "android": {
    "version": "1.2.3",
    "versionCode": "10234"
  }
}

即使版本号不变,build number 也应始终递增。这样能确保每次应用商店提交都有唯一标识,同时让用户清楚了解版本。

Beta 版本管理

管理 Beta 版本需要一套结构化的流程来分发测试构建。Capgo 的 channel 系统 以下步骤简化了这一流程:

  1. Channel 设置

为每个测试阶段创建独立的 Channel:

{
  "beta": {
    "version": "1.3.0-beta.1",
    "users": "beta-testers"
  },
  "production": {
    "version": "1.2.3",
    "users": "all"
  }
}
  1. 控制用户访问

设置权限,控制哪些用户可以访问 Beta 版本。这样能确保只有获批的测试人员收到 Beta 构建,而生产用户获得稳定版。

  1. 版本迭代

用清晰的版本递进机制跟踪开发阶段:

阶段 版本格式 用途
Alpha 1.3.0-alpha.1 内部测试
Beta 1.3.0-beta.1 外部测试组
RC (发行候选版) 1.3.0-rc.1 发布前的最终测试
生产环境 1.3.0 正式发布

这种方法可以确保测试充分,并实现开发阶段之间的平滑过渡,让整个过程的版本追踪保持井然有序且透明。

App 版本显示

在 App 中显示准确的版本信息,是让用户随时了解情况并有效管理更新的关键。

使用 Capacitor 获取版本号

你可以使用 Capacitor 配合以下 code 获取版本详情:

import { App } from '@capacitor/app';

async function getAppInfo() {
  const info = await App.getInfo();
  console.log(`Version: ${info.version}`);
  console.log(`Build: ${info.build}`);
}

为了更高效,可以创建一个可复用的函数:

export const getVersionString = async () => {
  const info = await App.getInfo();
  return `v${info.version} (${info.build})`;
};

该函数简化了在 App 界面中显示版本信息的过程。

版本 UI 实现

以下是将版本显示集成到设置组件中的示例:

@Component({
  selector: 'app-settings',
  template: `
    <div class="version-info">
      <span>Version: {{ versionString }}</span>
      <span *ngIf="updateAvailable" class="update-badge">
        Update Available
      </span>
    </div>
  `
})

显示版本信息的常见位置包括:

位置 用途 实现
设置页面 完整版本与构建 详细版本信息
关于页面 基础版本显示 仅显示版本号
应用页脚 极简显示 精简版本字符串

除了展示版本信息,集成更新检查系统还能提升用户体验。

更新检查系统

更新检查系统可确保用户获得最新功能和修复。Capgo 通过实时通知和受控的更新通道来管理这一流程:

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

async function checkForUpdates() {
  const current = await CapacitorUpdater.current();
  const latest = await CapacitorUpdater.getLatest();

  if (current.version !== latest.version) {
    await CapacitorUpdater.download({
      version: latest.version
    });
  }
}

“我们采用敏捷开发,@Capgo 对于向用户持续交付至关重要!” —— Rodrigo Mantica [1]

你还可以添加面向用户的更新通知,例如:

@Component({
  template: `
    <update-modal 
      [version]="newVersion"
      [features]="updateFeatures"
      (updateNow)="performUpdate()"
    />
  `
})

对于企业级应用,Capgo 的通道系统允许你控制更新的发布范围:

渠道 更新类型 目标受众
生产环境 稳定版本 所有用户
Beta 预发布版本 测试组
严重 紧急修复 受影响用户

此方法通过 Capgo 的分析仪表盘跟踪更新性能,同时确保应用可靠性。

版本管理方案

让我们深入探讨如何有效管理应用版本的高级解决方案。

版本工具选项

在选择版本控制工具时,应重点关注那些能简化更新流程、保护您的 code,并支持应用商店发布和 Live Update 的工具。

以下是值得关注的核心特性:

功能 重要性 影响
Capgo Live Updates 严重 最大限度减少 App Store 审核导致的延迟
安全 必不可少 保护用户数据与 code 的完整性
数据分析 重要提示 衡量更新成功率与用户采用率
CI/CD 集成 实用 简化部署流程
成本效益 战略性 影响长期预算规划

该领域中一款出色的工具是 Capgo,它提供了专门针对以下场景设计的特性: Capacitor 应用.

Capgo 版本控制功能

Capgo Live Update Dashboard 界面

Capgo 提供强大的版本管理功能,包括:

  • 已成功交付 2350 万次更新
  • 95% 的用户在 24 小时内完成更新
  • 82% 全球成功率
  • 全球平均 API 响应时间为 434ms

以下是使用 Capgo 进行版本控制的示例:

// Capgo version control example
import { CapacitorUpdater } from '@capgo/capacitor-updater';

const versionControl = {
  async checkVersion() {
    const current = await CapacitorUpdater.current();
    return current.version;
  },

  async deployUpdate(version: string) {
    await CapacitorUpdater.setChannel({
      channel: 'production',
      version: version
    });
  }
};

“由于 Appcenter 停止了对混合应用的 Live Updates 支持,而 @AppFlow 又实在太贵,我们目前正在试用 @Capgo。” —— Simon Flack [1]

团队规模解决方案

Capgo 提供灵活的套餐,满足各种规模团队的需求,让版本管理可扩展且高效。

团队规模 方案 核心功能
独立开发者 基础云托管 Live Update,1,000 MAU
小型团队(2-5 人) Maker 套餐 10,000 MAU,500GB 带宽
中型团队(6-20 人) 团队版套餐 100,000 MAU,权限管理
企业版 自定义 PAYG 无限 MAU,专属支持

对于较大的团队,Capgo 的 channel 系统可精确控制版本部署:

const enterpriseVersionControl = {
  channels: {
    production: 'stable-releases',
    beta: 'early-access',
    internal: 'development'
  },

  async deployToChannel(channel: string, version: string) {
    await CapacitorUpdater.setChannel({
      channel: channel,
      version: version
    });
  }
};

“我们采用敏捷开发,@Capgo 对于向用户持续交付至关重要!” —— Rodrigo Mantica [1]

Capgo 还内置 analytics dashboard,可监控版本采用率并及早发现潜在问题。借助内置加密和可自定义的托管选项,团队在扩展部署工作流的同时也能保障安全。

总结

理解版本标签是简化开发与部署流程的关键。下面快速回顾核心概念和入门步骤。

核心要点

版本标签帮助开发者保持更新顺畅可靠。规范的版本控制具有以下明显优势:

优势 影响 结果
即时更新 缩短审核周期 更快的用户采用 [1]
版本控制 更好的 code 管理 更高的成功率 [1]
更新追踪 实时监控 更快的问题解决 [1]
分发控制 定向发布 多平台支持

这些结果凸显了使用有效的版本管理工具的重要性。

如何开始

要落实这些优势,请遵循以下步骤:

  • 设置版本跟踪:在您的 package.json 文件中采用语义化版本控制,并集成必要的插件。
  • 添加更新检查:实施系统以验证和跟踪版本更新。
  • 配置分发渠道:为生产、Beta 和开发环境创建独立环境。

最后,考虑添加 live update 系统,以确保部署既快速又安全。

继续阅读:Capacitor 应用中的版本标记

如果你正在使用 Capacitor 应用中的版本标记 要规划回滚和版本控制,请将其与 回滚 有关 Rollbacks 的实现细节, 版本定向 有关 Version Targeting 的实现细节, 更新行为 有关 Update Behavior 的实现细节, bundle 有关 bundle 的实现细节,以及 Capgo Live Update 有关 Capgo Live Updates 的产品工作流。

为 Capacitor 应用提供 Live Updates

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

博客最新动态

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