追記 (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.plist
DLしてプロジェクトに追加すれば動くはず...。
ついでになんとなくFireStore
も入れてみました
link
Happy Firebase on Carthage Life!
ビルドさえ通ればあとは楽しいFirebase
コーディングの開幕ですね。
地雷を踏むたびに随時更新していければと思います。