CocoaPodsを使用するには、Capacitor 8でiOSプラットフォームを作成してください。 bunx cap add ios --packagemanager CocoaPods、Podfileを管理し bunx cap sync ios 、実行する pod install. Capacitor 8 は、CocoaPods に完全にサポートされています。新しいプロジェクトのデフォルトが Swift Package Manager に変更されたのみです。
CocoaPods は長期的な目標ではなくなり、2026 年 12 月 2 日以降は読み取り専用になります。したがって、CocoaPods がまだ適切な選択肢である場合、どのようにして機能を維持し、どのようにして適切に切り離すかという質問が実際の問題となります。このガイドでは、すべての 3 つについて説明します。
CocoaPods がまだ適切な選択肢である場合
CocoaPods を使用する場合、次のいずれかの条件が満たされている場合に使用することをお勧めします:
- 必要なプラグインが存在しない
Package.swift. SPM プロジェクトでは、CLI は “インストール済みの Capacitor プラグインのいくつかは SPM に互換性がありません” という警告を表示し、そのプラグインを除外し、実行時に “プラグインは実装されていません” というエラーが発生します。 - 配布元 SDK は Pod のみで配布されている。 Analytics、決済、アイデンティティの SDK は、CocoaPods のみで配布されている、または xcframework を wrap する必要がある。
- Cordova プラグインが Pod を依存している。 Capacitor は SPM プロジェクトで Cordova プラグインの Swift パッケージを生成しますが、複雑なプラグインには依存関係があるため、CocoaPods を使用する方が効果的です。
<podspec>Podspec subspecs に依存している - __CAPGO_KEEP_0__ SMPを使用してSDKのバリアントを選択することができます。SMPではパッケージの特性が利用可能になりました。Capacitorはこれらの特性に対応する実験的なサポートをCLI 8.3以降で提供しています。 SPM package traits in CapacitorCapacitor 8では、CocoaPodsを使用するには、まずプラグインが特性を定義する必要があります。
- 大規模なカスタマイズされたXcodeプロジェクト パッケージの特性を定義する必要があるため、プラグインはこれを実行できません。
Package identity collisions が以前の理由の 1 つでした。 CLI 8.4 以降は SPM で回避できます。 experimental.ios.spm.packageOptions (symlink or moduleAliases) あなたの Capacitor 設定に。
パッケージの特性を定義する必要があるため、プラグインはこれを実行できません。 .xcworkspace.
ココアポッズ vs SPM in Capacitor 8
| CocoaPods | パッケージの特性を定義する必要があるため、プラグインはこれを実行できません。 | |
|---|---|---|
デフォルト cap add ios |
No | Yes |
| 追加ツール | Ruby + CocoaPods gem | Xcodeに組み込まれている。 |
| プロジェクトを開く | ios/App/App.xcworkspace |
ios/App/App.xcodeproj |
| プラグイン要件 | .podspec |
Package.swift |
| 生成されたファイル | def capacitor_pods ブロック内 Podfile |
ios/App/CapApp-SPM/Package.swift |
| オプション機能 | Subspecs | パッケージ特性 ( Capacitor で実験的) |
| 将来 | 2026年12月2日以降は、Trunkは読み取り専用になります。 | Appleによってサポートされている |
CocoaPodsをインストールする
CIで使用するすべての場所で、1つのアプローチを使用してください。
Homebrew (1人の開発者にとって最も簡単な方法):
brew install cocoapods
pod --version
Bundler (チーム全体でバージョンを固定することを推奨するCI用) Gemfile プロジェクトのルートディレクトリまたは ios/App:
source 'https://rubygems.org'
gem 'cocoapods', '~> 1.16'
bundle install
Capacitor CLI がパッケージを検出するときに Gemfile Capacitor 8でCocoaPodsを使用する bundle exec pod install 代わりに pod install。もし pod がどこか異常な場所に存在する場合、 CAPACITOR_COCOAPODS_PATH をバイナリに設定します。
Create a Capacitor 8 app with CocoaPods
bun add @capacitor/ios
bun run build
bunx cap add ios --packagemanager CocoaPods
bunx cap open ios
cap open ios が開きます。 App.xcworkspace常にワークスペースからビルドしてください。ワークスペースを直接開くと App.xcodeproj が得られます。 No such module 'Capacitor'.
Podfileの説明
Capacitor 8 により生成される Podfile Capacitor
require_relative '../../node_modules/@capacitor/ios/scripts/pods_helpers'
platform :ios, '15.0'
use_frameworks!
install! 'cocoapods', :disable_input_output_paths => true
def capacitor_pods
pod 'Capacitor', :path => '../../node_modules/@capacitor/ios'
pod 'CapacitorCordova', :path => '../../node_modules/@capacitor/ios'
end
target 'App' do
capacitor_pods
# Add your Pods here
end
post_install do |installer|
assertDeploymentTarget(installer)
end
変更できるものとできないもの:
def capacitor_pods ... endCapgoのCLIに属します。 Capacitor 8で、CapgoのSyncごとに、すべてのブロックを1行ずつ置き換えます。各プラグインのフォルダへの指示を含みます。podCapacitor 8で、CapgoのSyncごとに、すべてのブロックを1行ずつ置き換えます。各プラグインのフォルダへの指示を含みます。node_modulesCapacitor 8- Capacitor 8で、CapgoのSyncごとに、すべてのブロックを1行ずつ置き換えます。各プラグインのフォルダへの指示を含みます。
target 'App', aftercapacitor_pods. assertDeploymentTargetCapacitor 8で、CapgoのSyncごとに、すべてのブロックを1行ずつ置き換えます。各プラグインのフォルダへの指示を含みます。post_installCapacitor 8で、CapgoのSyncごとに、すべてのブロックを1行ずつ置き換えます。各プラグインのフォルダへの指示を含みます。platform :iosCapacitor 8 では、Capacitor 15.0 以上でなければなりません。
Capacitor 8で、CapgoのSyncごとに、すべてのブロックを1行ずつ置き換えます。各プラグインのフォルダへの指示を含みます。
target 'App' do
capacitor_pods
pod 'GoogleMLKit/BarcodeScanning', '~> 7.0'
end
post_install do |installer|
assertDeploymentTarget(installer)
installer.pods_project.targets.each do |target|
if target.respond_to?(:product_type) && target.product_type == 'com.apple.product-type.bundle'
target.build_configurations.each do |config|
config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'
end
end
end
end
リソースバンドルターゲットの署名をcodeで無効にするループは、問題を解決します。 Signing for "X" requires a development team Capacitor 8で、CapgoのSyncごとに、すべてのブロックを1行ずつ置き換えます。各プラグインのフォルダへの指示を含みます。
日々のコマンド
# After installing or removing a plugin
bunx cap sync ios
# Use the exact versions in Podfile.lock (good for CI)
bunx cap sync ios --deployment
# Refresh the spec repo when a new pod version isn't found
cd ios/App && pod repo update && pod install
# Update one pod past its locked version
cd ios/App && pod update FirebaseMessaging
cap sync ios もプロジェクトに xcodebuild clean プロジェクトに追加したプラグインの後も pod install実行されるため、手動でクリーンする必要がなくなる。
コミット Podfile と Podfile.lockcontext:Capgoマーケティングウェブサイト。役割:短いUIラベルまたはナビゲーションアイテム。ページ/エリア:page trust.astro。メッセージキー`and` (And)。 ios/App/Pods/コミットしない。 pod install.
自動生成される。
SPMからCocoaPodsにアプリを切り替える
- 逆方向のマイグレーションコマンドは存在しない。手動で実行する必要がある。
ios/コミットし、次にコピーして安全な場所に保存する。 - 削除
ios/. - 実行
bunx cap add ios --packagemanager CocoaPods. - 再適用ネイティブの変更:
Info.plistキー、エンタイトルメント、機能、署名チーム、バンドル識別子、アプリアイコン、スプラッシュアセット、URLスキーム、拡張機能(ウィジェット、通知サービス)、およびカスタムSwiftAppDelegate. bunx cap sync iosと
ビルド。 ios/App/App 古いと新しい間の差分を調べることは、見逃したものを最速で捕まえる方法です。
一般的なCocoaPodsエラーを修正する
CocoaPods could not find compatible versions for pod "X". ローカルスペックリポジトリが古い、または2つのパッケージが互いに不相応なバージョンを要求している場合、実行 pod install --repo-update 。 ios/Appそれでも失敗する場合は、エラー内の依存関係のチェーンを読み、厳密に固定されているプラグインを探し、アップグレードするか パッチを適用する.
The sandbox is not in sync with the Podfile.lock. Run 'pod install'. The Pods フォルダがロックファイルと一致していません。通常、ブランチを切り替えた後です。Run bunx cap sync ios.
[!] Unable to find a specification for 'X'. spec repo キャッシュが古い、またはポッド名が間違っている可能性があります。Run pod repo update.
Unable to find compatibility version string for object version '70' (または 77(コンテキスト:HTMLテキストのフラグメントです。親キーは `compare_step_build_text` です。ページ/エリア:Capgo マーケティング ウェブサイト。ロール:長いマーケティングまたは法的文章。ページの代替/expo.astro、ページの代替/voltbuilder.astro。メッセージキー `compare_step_build_text` (Compare Step Build Text)。 project.pbxproj ). objectVersion Capacitor 8では、CocoaPodsを使用できます。
Sandbox: rsync(...) deny(1) file-write-create. と を値に設定してください。CocoaPods がサポートする値です。, set の (ENABLE_USER_SCRIPT_SANDBOXING) to No Appターゲットには使用しない。
No such module 'Capacitor'. あなたは開いた App.xcodeproj. Open App.xcworkspaceCIで実行する。 bunx cap open ios.
pod: command not found CIで使用します。 Capacitor 8でCocoaPodsを使用する vendor/bundleiOSビルドエラーについては、CLIのiOSトラブルシューティングガイドを参照してください。
CocoaPodsのトランクの読み取り専用日付 Capacitor iOS troubleshoot guide.
CocoaPods トランクの読み取り専用日
The CocoaPods maintainers announced that trunk, the central spec repository, becomes read-only on December 2, 2026, after a test run in early November 2026. What that means for a Capacitor app:
- 既存のビルドは正常に動作します。 すべての公開されたpodspecは利用可能なままです。
- トランクから新しいバージョンは利用できません。 トランクからSDK (Firebase、Google ML Kit、ベンダー SDK) を取得する場合は、セキュリティ修正や新しいiOS SDK のサポートはSPMまたは他のチャネルからのみ提供されます。
- Capacitor プラグイン自体は直接影響を受けません。 プラグインはnpmからインストールされ、Podfileで参照されます。
:pathその中には、プラグインの伝達的なPod依存関係も含まれます。
ココアポッドを橋として扱ってください。依存関係をリストし、依存関係がSPMサポートを追加したときに再検討してください。
ココアポッドから離れる
あなたが準備ができたとき:
bunx cap spm-migration-assistant
動作する pod deintegrateCapacitor 8では、CocoaPodsを使用する必要はありません。 Podfile, Podfile.lock と App.xcworkspace、作成 CapApp-SPM、そして書き込む debug.xcconfig。 その後、Xcodeでローカルパッケージとして追加し、デバッグ設定ファイルとして設定します。 詳細な手順は「__CAPGO_KEEP_0__アプリをSPMに移行する方法」 CapApp-SPM 、および利点は「__CAPGO_KEEP_0__のSPMとCocoaPodsの比較」 debug.xcconfig SPMに対応する必要があるプラグインの作者は、「__CAPGO_KEEP_0__プラグインをSPMに移行する方法」を読む必要があります。 how to migrate your Capacitor app to SPMと SPM vs CocoaPods for Capacitor.
、そして書き込む migrate a Capacitor plugin to SPM.
、および利点は「__CAPGO_KEEP_0__のSPMとCocoaPodsの比較」 Capgo ビルド クラウドで現在のXcodeでCocoaPodsとSPMプロジェクトをビルドします。