CocoaPodsエラー:object version '70'の互換性バージョンが見つからない問題の解決
環境依存次の環境で発生する問題です:
- CocoaPods 1.16.2
- Xcode 16.1+
- macOS 15.0.1
- FlutterプロジェクトにShare Extension追加後
問題の詳細
Flutter iOSプロジェクトにShare Extensionを追加後、pod install
実行時に下記エラーが発生します:
bash
ArgumentError - [Xcodeproj] Unable to find compatibility version string for object version `70`.
発生条件の特徴:
- Share Extensionターゲット追加前は正常動作
- 「Podsディレクトリ削除」「pod deintegrate」等の通常対策が無効
- プロジェクト再生成やCocoaPodsダウングレードでも解消しない
根本原因
Xcode 16の新機能を使用すると、プロジェクトファイル(.pbxproj
)の objectVersion
が自動的に 70
に更新 されます。これに対応していないCocoaPodsバージョン(1.16.2等)がこのフォーマットを認識できないことが原因です。
キーポイント
特定操作が objectVersion
を変更します:
- Share Extensionターゲット追加
- Project Navigatorで「フォルダ作成」(Xcode 16限定機能)
- Xcode 16のみがサポートするプロジェクト設定
解決方法
方法1:objectVersionの手動変更(推奨)
- テキストエディタでプロジェクトファイルを開くbash
open -a TextEdit your_project.xcodeproj/project.pbxproj
objectVersion
の値を変更diff- objectVersion = 70; + objectVersion = 60; // または 56, 55等
- CocoaPodsを再実行bash
pod deintegrate pod install
Xcodeバージョン | 互換 objectVersion |
---|---|
Xcode 15 | 56 |
Xcode 14 | 55 |
Xcode 13 | 54 |
方法2:Xcodeプロジェクト設定変更
- Xcodeでプロジェクトを開く
- PROJECTセクションを選択
- Build Settings → Project Format を変更diff
- Xcode 16.0 + Xcode 14.0-compatible
方法3:Xcode新機能の使用回避
objectVersion
が昇格する操作を避ける方法:
- フォルダ作成時:右クリック→「New Group」を選択
(※「New Folder」はXcode 16のみの機能) - 既存フォルダの変換:
- Project Navigatorでフォルダを右クリック
- Convert to Group を選択
- 全フォルダをグループに変換後に
pod install
実行
補足知識
なぜこの問題が起きるか?
予防対策
- CocoaPodsを最新版に更新(ただしFlutterプロジェクトでは要注意)
- チーム開発時は全メンバーのXcodeバージョンを統一
project.pbxproj
ファイルの変更をGitで管理
対応後の検証手順
- Share Extensionターゲットでアーカイブが成功するか確認
- メインアプリとExtension間でデータ共有が機能するかテスト
pod install
を複数回実行して再発しないか確認
objectVersion
を下げると一部のXcode機能が制限されますが、Flutterプロジェクトでは通常問題ありません。Xcode 16専用機能が必要な場合のみ最新のCocoaPods使用を検討してください。