🫠
チーム開発だから勝手にiosのバージョン変えられない。どうしよう。。
チーム開発で、flutterSDKのバージョンとpodのバージョンの互換性(+Firebaseのバージョンなどなど)が悪くなってしまったみたいで変えていいのか??と思ったが、PRする時に戻せばいい、らしい(笑)
ということで一連の流れをまとめました。
CocoaPodsエラーの原因と対策の流れ
以下に、エラーの原因とその対策の流れをまとめます。
エラーの原因
-
ターゲットのプラットフォームが指定されていない:
- CocoaPodsが自動的に最新のiOSバージョンを使用するため、バージョンの不一致が発生。
- エラーメッセージ:
[!] Automatically assigning platform `iOS` with version `15.0` on target `Runner` because no platform was specified. Please specify a platform for this target in your Podfile. See `https://guides.cocoapods.org/syntax/podfile.html#platform`.
-
CocoaPodsのスペックリポジトリが古い:
- 依存関係が解決できない。
- エラーメッセージ:
Error: CocoaPods's specs repository is too out-of-date to satisfy dependencies. To update the CocoaPods specs, run: pod repo update
-
Firebaseライブラリのバージョンの不一致:
-
異なるFirebaseライブラリ間で互換性の問題が発生し、依存関係が解決できない。
-
エラーメッセージ:
[!] CocoaPods could not find compatible versions for pod "Firebase/Auth": In snapshot (Podfile.lock): Firebase/Auth (= 10.27.0) In Podfile: firebase_auth (from `.symlinks/plugins/firebase_auth/ios`) was resolved to 5.1.2, which depends on Firebase/Auth (= 10.28.0)
[!] CocoaPods could not find compatible versions for pod "FirebaseFirestore": In snapshot (Podfile.lock): FirebaseFirestore (from `https://github.com/invertase/firestore-ios-sdk-frameworks.git`, tag `10.27.0`) In Podfile: FirebaseFirestore (from `https://github.com/invertase/firestore-ios-sdk-frameworks.git`, tag `10.27.0`) cloud_firestore (from `.symlinks/plugins/cloud_firestore/ios`) was resolved to 5.1.0, which depends on Firebase/Firestore (= 10.28.0) was resolved to 10.28.0, which depends on FirebaseFirestore (~> 10.28.0)
[!] CocoaPods could not find compatible versions for pod "FirebaseCore": In Podfile: FirebaseFirestore (from `https://github.com/invertase/firestore-ios-sdk-frameworks.git`, tag `10.27.0`) was resolved to 10.27.0, which depends on FirebaseFirestoreBinary (= 10.27.0) was resolved to 10.27.0, which depends on FirebaseCore (= 10.27.0) firebase_analytics (from `.symlinks/plugins/firebase_analytics/ios`) was resolved to 11.2.0, which depends on Firebase/Analytics (= 10.28.0) was resolved to 10.28.0, which depends on Firebase/Core (= 10.28.0) was resolved to 10.28.0, which depends on FirebaseAnalytics (~> 10.28.0) was resolved to 10.28.0, which depends on FirebaseCore (~> 10.0) firebase_core (from `.symlinks/plugins/firebase_core/ios`) was resolved to 3.2.0, which depends on Firebase/CoreOnly (= 10.28.0) was resolved to 10.28.0, which depends on FirebaseCore (= 10.28.0)
-
対策の流れ
-
ターゲットのプラットフォームを指定する
platform :ios, '15.0'
-
CocoaPodsのリポジトリを更新
pod repo update
-
Podfileを編集してFirebaseライブラリのバージョンを統一する
platform :ios, '15.0' target 'Runner' do use_frameworks! use_modular_headers! # Firebaseライブラリのバージョンを統一 pod 'Firebase/Analytics', '10.28.0' pod 'Firebase/Auth', '10.28.0' pod 'Firebase/Firestore', '10.28.0' pod 'Firebase/Storage', '10.28.0' pod 'Firebase/Core', '10.28.0' pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '10.28.0' flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) end target 'RunnerTests' do inherit! :search_paths end
-
Podfile.lockの削除
rm Podfile.lock
-
CocoaPodsのキャッシュをクリア
pod cache clean --all
-
Podのインストール
pod install
実施手順の具体例
-
プロジェクトのルートディレクトリに移動
cd path_to_your_flutter_project/ios
-
Podfile.lockの削除
rm Podfile.lock
-
CocoaPodsのキャッシュをクリア
pod cache clean --all
-
CocoaPodsのリポジトリを更新
pod repo update
-
Podfileの編集
nano Podfile # 上記の内容で保存
-
Podのインストール
pod install
-
依存関係の確認
flutter doctor
-
アプリのビルド
flutter run
これでエラーが解消され、依存関係の問題が解決されました。この記事を参考にして、同様の問題が発生した場合に対処してください。何か他に質問があればお知らせください。
Discussion