XcodeプロジェクトでFirebaseを使用するために、cocoapodsにて、Firebase/Coreをインストールし、初期化コードを記述して、ビルドしようとしたところ、以下のビルドエラーが発生した。
linker command failed with exit code 1 (use -v to see invocation)
エラーの詳細は以下のように出力されていた。
Undefined symbols for architecture x86_64:
“_GULLoggerRegisterVersion”, referenced from:
___FIRLoggerInitializeASL_block_invoke in FirebaseCore(FIRLogger.o)
“_GULLoggerInitializeASL”, referenced from:
___FIRLoggerInitializeASL_block_invoke in FirebaseCore(FIRLogger.o)
“_GULLogBasic”, referenced from:
_FIRLogBasic in FirebaseCore(FIRLogger.o)
“_GULLoggerEnableSTDERR”, referenced from:
___FIRLoggerInitializeASL_block_invoke in FirebaseCore(FIRLogger.o)
“_GULSetLoggerLevel”, referenced from:
_FIRSetLoggerLevel in FirebaseCore(FIRLogger.o)
“_GULLoggerForceDebug”, referenced from:
___FIRLoggerInitializeASL_block_invoke in FirebaseCore(FIRLogger.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
“_GULLoggerRegisterVersion”, referenced from:
___FIRLoggerInitializeASL_block_invoke in FirebaseCore(FIRLogger.o)
“_GULLoggerInitializeASL”, referenced from:
___FIRLoggerInitializeASL_block_invoke in FirebaseCore(FIRLogger.o)
“_GULLogBasic”, referenced from:
_FIRLogBasic in FirebaseCore(FIRLogger.o)
“_GULLoggerEnableSTDERR”, referenced from:
___FIRLoggerInitializeASL_block_invoke in FirebaseCore(FIRLogger.o)
“_GULSetLoggerLevel”, referenced from:
_FIRSetLoggerLevel in FirebaseCore(FIRLogger.o)
“_GULLoggerForceDebug”, referenced from:
___FIRLoggerInitializeASL_block_invoke in FirebaseCore(FIRLogger.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
どうやら、Google関連のモジュールがリンクされていないようだが、どこを調べたら良いのかさっぱりわからない。
ということで、ゼロからプロジェクトを立ち上げて、Firebaseのインストールをして、成功したプロジェクトとBuild Settingsを比較してみることに。
結局、Build SettingsのLinkingセクションのOther Linker Flags、を$(inherited)に設定したら、ビルドできた。
ビルド失敗していたプロジェクトの方は、Other Linker Flagsが、-ObjCとなっていた。これは、もともと、Google Analytics SDKを使用していて、その際に追加した項目。今回駄目だったのは、cocoapodsが、ココをうまく書き換えられなかったということだろうか?
※後ほど、pod initを行ったら、この辺に関するエラーというか警告が、ちゃんと出力されていました…
コメント