What
Carthageを使ってFirebase (今回はその中のFirebaseAnalyticsとFirebaseFirestore) を使用するプロジェクトをビルドするのに少し手間取ったので、その際に必要だった作業のメモです。
Goal
今回はFireStoreが使いたかったので、以下の2つのビルドが成功した時点をゴールとします。
- FirebaseAnalytics
- FirebaseFirestore
Environments
- MacOS 10.14
- Xcode 10.1
- Carthage 0.31.2
How
基本的にオフィシャルのGithub Repositoryに置かれているドキュメントを読んでそのとおりに実行します。
Cartfile
まずCartfileに以下を追記して carthage update
を実行します。
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAnalyticsBinary.json"
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseFirestoreBinary.json"
Link Binary With Libraries
上記手順で Carthage/Build/iOS/
に生成された *.framework
を Link Binary With Libraries
に追加します。
私の場合は以下のようなファイルでした。
Other Linker Flags
"Other Linker Flags" in "Build Settings" に -ObjC
が設定されていない人はしておきます。
Import GoogleService-Info.plist
Firebase consoleから GoogleService-Info.plist
を取得していない人は取得してプロジェクトにインポートしておいてください。
Remove Firebase.framework
ここで Firebase.framework
を Link Binary With Libraries
から削除してください(そもそも上の手順で入れなければ良さそう)。
理由についてはこちらのgithub issue上のコメントにあります。
Import Bundle
ここで必要に応じて "Copy Bundle Resources" in "Build Phase" にリソースファイルを追加します。
今回の手順ではFirebaseFirestoreを使用しているので Carthage/Build/iOS/FirebaseFirestore.framework/gRPCCertificates.bundle
が必要です。
Link Dependent Libraries
さてオフィシャルの手順書的にはこれでほぼ終わったも同然なのですが、最後の
Some additional libraries/frameworks may be needed depending on which Firebase frameworks you use
が曲者です。何が必要なのかなんとなく分かるけど、トライアンドエラーが必要。
というわけでビルドを試して出てきたエラーログと格闘した結果今回使うFirebase frameworksが依存していたのは以下の3つだったので、これらを Link Binary With Libraries
に入れることで無事ビルドすることができました。FirebaseAnalyticsに値が送られていることも確認できたので無事動いているようです。
- libsqlite3.tbd
- libc++.tbd
- StoreKit.framework
まとめ
CocoaPodsを使えばもうちょっと簡単にできるのですが、将来的なものとかCI環境とかを考えるとできるだけCarthageに寄せていきたい気持ちなので、多少の頑張りで解決できる部分は対応していきたい。