追記 (2018/9/20)
Firebase SDK v5.8.0 (iOS12.0リリース時点で最新)を通すために必要な依存ライブラリ
(環境は Xcode 10.0 Build version 10A255 です)
FirebaseAnalyticsBinary(v5.8.0)
こうじゃった
(FirebaseAnalyticsは気にしないでください。依存ライブラリは5個)
FirebaseMessagingBinary(v5.8.0)
↑をすべて含めることに加え、こうじゃった
(依存ライブラリは3個)
我の環境の場合は、Build Settings -> Other Linker Flags は -ObjC のみでよかった。$(inherited) すら必要ではなかった。
Build Active Architecture Only は、Yes だった。
Firebaseの各SDKが依存しているライブラリは、これらのヒントを糸口に探れ!!
各SDKによって依存するライブラリが異なるので、
これらのヒントを糸口に、探っていきたいです。
1 (PRJROOT)/Carthage/Build 以下の、.SDK名(例: FirebaseMessagingBinary).version ファイル
このような記載がしてある。これはFirebaseMessagingBinary.versionの例。
例えばiOS開発の場合、キー "iOS" の各オブジェクトが持つキー "name" の値の情報が、
必要なライブラリを知る一助になるかも知れない。
(でも、↑のキャプチャ画像のライブラリと必ずしも一致しないんだよなぁ...要研究)
{
"Mac" : [
],
"watchOS" : [
],
"tvOS" : [
],
"commitish" : "5.8.0",
"iOS" : [
{
"name" : "FirebaseAnalytics",
"hash" : "550e166a23d8401f5d5ad63d5455fe86d700a347d16be00b0228c3f2253c7e3a"
},
{
"name" : "nanopb",
"hash" : "31e0c9870b373b7f96b258e782e1246eed00b9ab7f29ccde21984e8b8d725e3e"
},
{
"name" : "Firebase",
"hash" : "a8669248da9519e9955e00448e518e1ca6becb32689eedddde237e19ad1136ae"
},
{
"name" : "FirebaseCore",
"hash" : "dca5c7e90e052a2a8087cc2ae1e63292f954b8c04a1f371194895a1ea6a2ff52"
},
{
"name" : "GoogleUtilities",
"hash" : "aef8824414de90178a87db399c8d45ad2c0d2a27d1edcca001915a73ce198c8a"
},
{
"name" : "FirebaseCoreDiagnostics",
"hash" : "1cbbb0dc9e4bd78f26795bf1b4253aa60edd21c77d8edfdcd7bddac329e286bd"
},
{
"name" : "FirebaseInstanceID",
"hash" : "fe0c5474f699f502b1d9d80bf535ebdb4cd44bb6e343bf5b014091c186bc8508"
},
{
"name" : "GoogleAppMeasurement",
"hash" : "fedc367dc718b254041c48844f6f64a2401f6da4873572d6b892fbf625508620"
}
]
}
2 (PRJROOT)/Carthage/Build/iOS/SDK名.framework/Module/module.modulemap
これもなにかのきっかけになるかも
framework module FirebaseAnalytics {
umbrella header "FirebaseAnalytics.h"
export *
module * { export *}
link "sqlite3"
link "z"
link framework "Security"
link framework "StoreKit"
link framework "SystemConfiguration"
link framework "UIKit"}
3
あとはこのエラーメッセージに含まれるライブラリ名。
怪しそうなワードがあれば、それを含めてみる
↑の写真なら、sqlite3 とか
あとは、ここにあるように、
各SDKのバージョンを統一させることを忘れないことも重要だと思われます。
その他
Carthageには、
~/Library/Caches/org.carthage.CarthageKit
というパスに、キャッシュの保管庫(?)のようなものがあるらしい。
carthage update する前に、この中のファイル群を除去すると、問題が解決することがあるらしい。
(追記終了)
(ここから原文。SDK: ver 5.6.0 のときの話でした。)
CarthageでFirebase関連ファイル管理したい!一味なのですが、そんなプログラマが遭遇したお話
この議論がほぼ全てです。Issuesちゃんと読もう...。
環境
こちらのページ「CocoaPods を使用せずに統合する」内のリンクからダウンロードできる最新SDKが5.6.0(2018/8/22時点最新)だったときのお話。
Xcode: 9.4.1
問題
Analytics(=Firebaseの大半の機能にインポート必須なライブラリ群)のビルドが通らなかった
対応策
これを参考に、
libsqlite3.tbd, libz.tbd, libc++.tbd
の3つを General - Linked Frameworks and Librariesに追加。
さらにそれに飽き足らず、これを参考に、
StoreKit
を、 General > Link binary with libraries > Add StoreKit.framework に追加。なんでや...
学んだこと
愚直にエラーメッセージでググる 基本をバカにしない😤
ハマったときこそ基本に立ち返る
今回は数十単位のエラーに圧倒されてググっていくのも一見憚られる感じなのですが、取りも直さず先達はきちんと回答を残してくれていました。
こんなえげつないエラーに見舞われているのは自分だけだという傲慢を捨て、集合知に教えを乞うていきましょう。
Firebaseの他の機能も追加しようとしてエラーに遭遇したら随時追記していきたいと思います😇
これらも忘れずにね
- Targetを選択 -> Build Settings -> Other Linker Flags に
-ObjCを追加 -
GoogleService-Info.plistをプロジェクトに追加
プロジェクト載せときます
なんとなくGoogleService-Info.plistだけ抜いたプロジェクトを載せておきます。ここ
単純にDLしてビルドしたらいきなりランタイムエラーが出るけど(could not find a valid GoogleService-Info.plist in your project. Please download one from https://console.firebase.google.com/.')、
Bundle ID変えて、自分用にGoogleService-Info.plistDLしてプロジェクトに追加すれば動くはず...。
ついでになんとなくFireStoreも入れてみました
link
Happy Firebase on Carthage Life!
ビルドさえ通ればあとは楽しいFirebaseコーディングの開幕ですね。
地雷を踏むたびに随時更新していければと思います。


