Edited at

Firebase環境構築メモ (using Carthage)


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 を実行します。


Cartfile

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/ に生成された *.frameworkLink Binary With Libraries に追加します。

私の場合は以下のようなファイルでした。

image.png


Other Linker Flags

"Other Linker Flags" in "Build Settings" に -ObjC が設定されていない人はしておきます。

Pasted_Image_2019_02_12_2_32.png


Import GoogleService-Info.plist

Firebase consoleから GoogleService-Info.plist を取得していない人は取得してプロジェクトにインポートしておいてください。


Remove Firebase.framework

ここで Firebase.frameworkLink Binary With Libraries から削除してください(そもそも上の手順で入れなければ良さそう)。

理由についてはこちらのgithub issue上のコメントにあります。


Import Bundle

ここで必要に応じて "Copy Bundle Resources" in "Build Phase" にリソースファイルを追加します。

今回の手順ではFirebaseFirestoreを使用しているので Carthage/Build/iOS/FirebaseFirestore.framework/gRPCCertificates.bundle が必要です。

image.png


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に寄せていきたい気持ちなので、多少の頑張りで解決できる部分は対応していきたい。


References