はじめに
FlutterでFirestoreを使うときに必ずと言っていいほどぶつかるのが、ビルドが長すぎる問題である。
このように多くの人がfirestore-ios-sdk-frameworksを導入していると思われる。
この記事はfirestore-ios-sdk-frameworks
導入時に発生したエラーの解決までも道のりである。
何か依存関係のエラー起きる
target 'Runner' do
use_frameworks!
use_modular_headers!
pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '11.2.0'
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
target 'RunnerTests' do
inherit! :search_paths
end
end
このようにfirestore-ios-sdk-frameworksを取得するようにしました。
pod install --repo-update
で各ライブラリの情報(バージョン、依存関係など)を更新した上でinstall
しかし、、、エラーになりました。。
$ pod install --repo-update (git)-[master]
Updating local specs repositories
Analyzing dependencies
Pre-downloading: `FirebaseFirestore` from `https://github.com/invertase/firestore-ios-sdk-frameworks.git`, tag `11.2.0`
cloud_firestore: Using Firebase SDK version '11.2.0' defined in 'firebase_core'
firebase_auth: Using Firebase SDK version '11.2.0' defined in 'firebase_core'
firebase_core: Using Firebase SDK version '11.2.0' defined in 'firebase_core'
[!] CocoaPods could not find compatible versions for pod "FirebaseCoreExtension":
In snapshot (Podfile.lock):
FirebaseCoreExtension (= 11.3.0, ~> 11.0)
In Podfile:
FirebaseCoreExtension (~> 11.3.0)
FirebaseFirestore (from `https://github.com/invertase/firestore-ios-sdk-frameworks.git`, tag `11.2.0`) was resolved to 11.2.0, which depends on
FirebaseFirestoreBinary (= 11.2.0) was resolved to 11.2.0, which depends on
FirebaseCoreExtension (= 11.2.0)
なんでや?
dev_dependencies:
flutter_test:
sdk: flutter
firebase_core: ^3.6.0
firebase_auth: ^5.3.1
cloud_firestore: ^5.4.4
firebase_core
は^3.6.0
iOS SDK をバージョン 11.2.0 にアップデートされているはず。。
謎である。
FirebaseCoreExtensionもバージョン指定
target 'Runner' do
use_frameworks!
use_modular_headers!
pod 'FirebaseCoreExtension', '~> 11.2.0'
pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '11.2.0'
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
target 'RunnerTests' do
inherit! :search_paths
end
end
FirebaseCoreExtension
も~> 11.2.0
でバージョンを直接
rm Podfile.lock
Podfile.lockを削除
pod install --repo-update
再度インストール
これで無事直りました!!
"Keep Xcode Version" vs. "Use Version on Disk"
インストールが成功すると、以下のような問いかけが出ることがあるかと
Xcodeで開いているプロジェクトファイル(Runner.xcworkspace)が他のアプリケーション(ここではCocoaPodsコマンド)によって変更されたために発生しています。
CocoaPodsのpod install
やpod update
を実行した直後にこのメッセージが出た場合、CocoaPodsによって更新された内容(ディスク上のファイル)を反映させたいのでUse Version on Disk
を選択しましょう