关于 capacitor-app-upgrades
用于规划和执行 Capacitor 应用升级的路由技能,要求每次只跨一个主版本。它帮助开发者选择目标版本、调用对应版本指南,并在继续前验证每一步升级。
主要功能
- 01检测当前 Capacitor 版本
- 02规划逐步跨主版本升级
- 03转入对应版本的技能
- 04检查插件兼容性
- 05提供构建和设备验证步骤
适用场景
- 01规划跨多个 Capacitor 版本升级
- 02在稳定版与预发布版间选择目标
- 03继续完成中断的迁移
- 04诊断升级后的构建失败
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ cap-go/ capgo-skills --skill capacitor-app-upgrades安装后在 Claude Code 中输入/capacitor-app-upgrades确认已加载。
附带文件metadata.json
详细介绍
Capacitor 应用升级(路由器)
规划并逐步执行 Capacitor 应用升级,每一步都使用对应版本的技能。
使用时机
在以下情况触发:
- 用户想升级 Capacitor 应用,但起始版本或目标版本未知,或两者相差超过一个主版本
- 用户询问“最新的 Capacitor”(与用户确认选择稳定版 8.5.x 还是预发布版 9)
- Capacitor 8.4 或更早版本的应用在 Xcode 27 上构建失败(需要执行 8.5 的 UIScene 步骤)
npx cap migrate中途失败,用户需要了解当前进度
请勿用于:
- 插件库仓库 →
capacitor-plugin-upgrades - Cordova/PhoneGap 应用 →
cordova-to-capacitor - 仅从 CocoaPods 迁移到 SPM →
cocoapods-to-spm
实时项目快照
package.json 中的当前 Capacitor 包:
!node -e "const fs=require('fs');if(!fs.existsSync('package.json'))process.exit(0);const pkg=JSON.parse(fs.readFileSync('package.json','utf8'));const out=[];for(const section of ['dependencies','devDependencies']){for(const [name,version] of Object.entries(pkg[section]||{})){if(name.startsWith('@capacitor/'))out.push(section+'.'+name+'='+version)}}console.log(out.sort().join('\n'))"
原生平台和 Capacitor 配置路径:
!find . -maxdepth 3 \( -name 'capacitor.config.json' -o -name 'capacitor.config.ts' -o -name 'capacitor.config.js' -o -path './ios' -o -path './android' \)
版本路径图(2026 年 10 月)
| 路径 | 技能 | 完成此步骤后的关键要求 |
|---|---|---|
| 4 -> 5 | capacitor-app-upgrade-v4-to-v5 | 参见技能 |
| 5 -> 6 | capacitor-app-upgrade-v5-to-v6 | 参见技能 |
| 6 -> 7 | capacitor-app-upgrade-v6-to-v7 | 参见技能 |
| 7 -> 8 | capacitor-app-upgrade-v7-to-v8 | Node 22、Xcode 26、iOS 15、minSdk 24、SDK 36、AGP 8.13、Gradle 8.14.3 |
| 8.x -> 8.5 | capacitor-uiscene-migration | iOS UIScene 生命周期(SceneDelegate + 场景清单);Xcode 27 要求此步骤 |
| 8.5 -> 9 | capacitor-app-upgrade-v8-to-v9 | Node 24、Xcode 27、iOS 16、minSdk 26、SDK 37、AGP 9.2.1、Gradle 9.5.1 |
Capacitor 当前稳定版为 8.5.x(latest)。Capacitor 9 是 next 标签下的预发布版(9.0.0-alpha.x):在 9.0.0 正式发布前,使用 @next 安装,正式发布后使用 @latest。将生产应用升级到预发布版前,请先征求用户同意;8.5 是稳妥的停止点,且已支持在 Xcode 27 上构建。
流程
- 检测。 从快照读取
@capacitor/core(版本范围不明确时运行npm ls @capacitor/core)。对于 8.x,还要检查是否已采用 UIScene:grep -c UIApplicationSceneManifest ios/App/App/Info.plist。 - 与用户确定目标版本(如果用户未说明):稳定版(8.5.x)或预发布版(9)。
- 规划升级路径。 每次只升一个主版本,绝不跳过。从 8.0-8.4 升到 9 时,先插入 8.5 UIScene 步骤。示例:
- 6 -> 9:6->7、7->8、8->8.5(UIScene)、8.5->9
- 8.2 -> 9:8.2->8.5(UIScene)、8.5->9
- 8.5 但没有场景清单 -> 9:先运行
capacitor-uiscene-migration对于大型应用,将升级路径列为 TODO 清单,并与用户确认。
- 逐步升级: 确保 git 工作树干净,加载对应步骤的技能,为目标版本安装 CLI(
npm i -D @capacitor/cli@<major>;升级到 9 时使用@next),运行npx cap migrate,完成手动检查清单,运行npx cap sync,然后构建 iOS 和 Android。在两个平台都构建成功前,不要开始下一步。建议每一步提交一次,以便通过二分法定位失败。 - 插件。 每一步完成后,将官方
@capacitor/*插件对齐到相同主版本,并检查第三方及@capgo/*插件的 peer 范围(npm view <pkg> peerDependencies)。 - 最终验证(见下文),然后提供后续选项:
cocoapods-to-spm(预计 CocoaPods Trunk 将于 2026 年 12 月 2 日改为只读),以及按原生版本配置 Capgo 实时更新频道。
验证
npx cap doctor
npm run build && npx cap sync
cd android && ./gradlew assembleDebug && cd ..
xcodebuild -project ios/App/App.xcodeproj -scheme App -destination 'generic/platform=iOS Simulator' build # CocoaPods: -workspace ios/App/App.xcworkspace
npx cap run ios
npx cap run android
在设备上:启动应用,测试 pause/resume、冷启动和热启动深层链接、推送注册,以及每个原生插件至少调用一次。如果应用通过 OTA 更新发布(Capgo),新原生版本需要新的原生构建;绝不要将为 v9 构建的 bundle 发给 v8 二进制文件(参见 capgo-live-updates)。
错误处理
cap migrate中途停止 → 按照相应版本的技能手动完成升级;不要开始下一个大版本。Migrate can only be used on Capacitor 7→ 已安装的 CLI 版本高于项目使用的版本;先降级 CLI,再进行升级。UIScene migration: project is in a partial state→ 由capacitor-uiscene-migration处理。- 升级后 iOS 构建失败 → 根据版本映射检查部署目标和 Xcode 版本。
- Android 构建失败 → 根据相应版本的技能检查 AGP、Gradle wrapper、JDK 和
variables.gradle。 - 第三方插件阻碍升级 → 升级该插件、替换它(在
capacitor-plugins中查找等效的 Capgo 插件),或暂停在当前版本。