メインコンテンツにジャンプ
Capacitor iOS 設定

How to Use CocoaPods with Capacitor 8 (and When Not To)

Use CocoaPods with Capacitor 8: create a CocoaPods iOS project, manage the Podfile, fix pod install errors, and plan for the CocoaPods trunk read-only date.

Article credits

マーティン・ドナディュー

ライター

ヴァレリア

レビュアー

エディター

Editor

How to Use CocoaPods with Capacitor 8 (and When Not To)

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 ... end CapgoのCLIに属します。 Capacitor 8で、CapgoのSyncごとに、すべてのブロックを1行ずつ置き換えます。各プラグインのフォルダへの指示を含みます。 pod Capacitor 8で、CapgoのSyncごとに、すべてのブロックを1行ずつ置き換えます。各プラグインのフォルダへの指示を含みます。 node_modulesCapacitor 8
  • Capacitor 8で、CapgoのSyncごとに、すべてのブロックを1行ずつ置き換えます。各プラグインのフォルダへの指示を含みます。 target 'App', after capacitor_pods.
  • assertDeploymentTarget Capacitor 8で、CapgoのSyncごとに、すべてのブロックを1行ずつ置き換えます。各プラグインのフォルダへの指示を含みます。 post_install Capacitor 8で、CapgoのSyncごとに、すべてのブロックを1行ずつ置き換えます。各プラグインのフォルダへの指示を含みます。
  • platform :ios Capacitor 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にアプリを切り替える

  1. 逆方向のマイグレーションコマンドは存在しない。手動で実行する必要がある。 ios/ コミットし、次にコピーして安全な場所に保存する。
  2. 削除 ios/.
  3. 実行 bunx cap add ios --packagemanager CocoaPods.
  4. 再適用ネイティブの変更: Info.plist キー、エンタイトルメント、機能、署名チーム、バンドル識別子、アプリアイコン、スプラッシュアセット、URLスキーム、拡張機能(ウィジェット、通知サービス)、およびカスタムSwift AppDelegate.
  5. 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プロジェクトをビルドします。

Live updates for Capacitor apps

When a web-layer bug is live, ship the fix through Capgo instead of waiting days for app store approval. Users get the update in the background while native changes stay in the normal review path.

最新のブログ記事

Capgo gives you the best insights you need to create a truly professional mobile app.