capacitor-plugin-upgrade-v6-to-v7 について
Capacitor 6 から 7 への移行ガイドです。プラグインの依存関係やネイティブビルド設定の更新、削除された API の置き換えを説明します。
主な機能
- 01プラグイン移行コマンドの実行
- 02Capacitor 依存関係の更新
- 03Android と iOS の設定調整
- 04削除された API の置き換え
- 05ビルド検証とサンプルアプリの実行
活用シーン
- 01Capacitor 6 のプラグインを 7 に対応
- 02PluginCall とプラットフォーム検出 API の置き換え
- 03ネイティブプロジェクトとツール設定の更新
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ cap-go/ capgo-skills --skill capacitor-plugin-upgrade-v6-to-v7インストール後、Claude Code で/capacitor-plugin-upgrade-v6-to-v7を入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
metadata.jsonreferences/android.mdios.mdtooling.md詳細
Capacitor プラグインを v6 から v7 にアップグレードする
プラグインライブラリを Capacitor 7 に移行します。情報源:https://capacitorjs.com/docs/updating/plugins/7-0
使用する場合
- スナップショットで
@capacitor/coreが 6.x となっており、プラグインを Capacitor 7 アプリで動作させる必要がある場合。 - プラグインコードで
call.success()、call.error()、registerWebPlugin、Capacitor.platform、Capacitor.isNativeの呼び出しや、BridgeFragmentの使用が残っている場合。 Package.swiftでcapacitor-swift-pmの参照先がbranch: "main"になっている場合。
使用しない場合:
- アプリのアップグレード →
capacitor-app-upgrade-v6-to-v7。 - プラグインが 5.x の場合は、先に
capacitor-plugin-upgrade-v5-to-v6を使用します。7.x の場合はcapacitor-plugin-upgrade-v7-to-v8を使用します。複数段階のアップグレードにはcapacitor-plugin-upgradesを使用します。 - SPM を一から追加する場合 →
capacitor-plugin-spm-support。
ライブプロジェクトのスナップショット
プラグインと 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=['package.name='+(pkg.name||''),'package.version='+(pkg.version||'')];for(const section of ['peerDependencies','dependencies','devDependencies']){for(const [name,version] of Object.entries(pkg[section]||{})){if(name.startsWith('@capacitor/'))out.push(section+'.'+name+'='+version)}}console.log(out.join('\n'))"
サンプルとネイティブプロジェクトのパス:
!find . -maxdepth 3 \( -path './example-app' -o -path './ios' -o -path './android' \)
参考資料
| ファイル | 読み込むタイミング |
|---|---|
references/android.md | Gradle、Java、Kotlin の変更を手動で適用する場合 |
references/ios.md | podspec/Package.swift/旧構造の Xcode プロジェクトで iOS ターゲットを引き上げる場合、capacitor-swift-pm を固定する場合 |
references/tooling.md | eslint、swiftlint、prettier、rollup、rimraf、docgen を更新する場合 |
事前確認
| ツール | 最小バージョン |
|---|---|
| Node.js | 20+ |
| Xcode | 16.0+ |
| iOS デプロイメントターゲット | 14.0 |
| Java | 21 |
| AGP / Gradle | 8.7.2 / 8.11.1 |
| Android SDK のデフォルト値 | minSdk 23、compileSdk 35、targetSdk 35 |
手順
-
6.x であることと、ワーキングツリーがクリーンであることを確認します。
-
プラグインのルートから実行します:
npx @capacitor/plugin-migration-v6-to-v7@latestgit diffを確認します。 -
package.json:開発用依存関係の
@capacitor/cli、core、android、iosを^7.0.0にし、ピア依存関係の@capacitor/coreを>=7.0.0にします。ツール類はreferences/tooling.mdに従います(rollup.config.jsからrollup.config.mjsへの名称変更と、スクリプトの--plugin=prettier-plugin-javaフラグに注意してください)。 -
Android:
references/android.mdに従い、SDK のデフォルト値を 23/35/35、AGP を 8.7.2、Gradle を 8.11.1、Java を 21、Kotlin を 1.9.25 にします。 -
iOS:
references/ios.mdに従い、podspec のs.ios.deployment_target = '14.0'、Package.swiftの.iOS(.v14)を設定し、capacitor-swift-pmをbranch: "main"ではなくfrom: "7.0.0"にします。 -
削除された API - 検索して置き換えます:
call.success(...)→call.resolve(...)、call.error(...)→call.reject(...)(Java/Kotlin および Swift)。registerWebPluginやその他の v2 時代の定義は削除されています。registerPluginを使用します(Capacitor 3 のプラグインアップグレードガイドを参照してください)。Capacitor.platform→Capacitor.getPlatform()、Capacitor.isNative→Capacitor.isNativePlatform()。- Android の
BridgeFragmentは削除されています。プラグインがこれを介してフラグメントを表示している場合は、必要なロジックをプラグイン独自のFragmentクラスにコピーします。
-
capacitor-app-upgrade-v6-to-v7を使用してサンプルアプリをアップグレードし、プラグインのメジャーバージョンを上げ、「Capacitor 7 が必要」と記載します。
検証
grep -n "\"@capacitor/\|rollup\|prettier\"" package.json
grep -rnE "\.success\(|\.error\(" android/src/main ios/ 2>/dev/null | grep -i call # expect none
grep -rnE "registerWebPlugin|Capacitor\.platform\b|Capacitor\.isNative\b|BridgeFragment" src/ android/ ios/ # expect none
grep -n "deployment_target" *.podspec # '14.0'
grep -n "iOS(\|capacitor-swift-pm" Package.swift 2>/dev/null # .v14, from: "7.0.0"
grep -n "VERSION_21\|gradle:8.7.2\|: 35\|: 23" android/build.gradle
npm run build
npm run verify # if the repo has the template verify scripts
両方のプラットフォームでサンプルアプリを実行します。
エラーへの対処
| エラー | 対処方法 |
|---|---|
cannot find symbol ... success( / error( on PluginCall | resolve/reject を使用します。 |
invalid source release: 21 | Gradle の JDK を 21 にします。 |
SPM:ターゲットの requires minimum platform version がプラグインの宣言より高い | Package.swift で platforms: [.iOS(.v14)] を設定し、capacitor-swift-pm を from: "7.0.0" に固定します。 |
Rollup 4 で rollup.config.js(ESM 設定ファイル)の読み込みに失敗する | rollup.config.mjs に名前を変更し、build スクリプトを更新します。 |
Property 'platform' does not exist on type 'CapacitorGlobal' | Capacitor.getPlatform() を使用します。 |