【iOS】Firebase SDK アップデート後の framework not found FirebaseInstanceIDというエラーを解消した話【Carthage】

お久しぶりです。Reoです。

しばらくiOS開発から離れていましたが、ようやく向き合えるようになってきました。頑張ろうと思っているのに早速今回のエラーにハマってしまい心が折れそうでした。いや、折れました。

すんごい初歩的なことだったんですが、備忘録として残しておきます。

 

環境

  • Xcode 11.5
  • Carthage 0.35.0
  • macOS Catalina (10.15.5)

 

今回の問題

Carthageを用いてFirebaseのAnalyticsとAdmobを以下のように導入していました。

Cartifle

binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAnalyticsBinary.json"
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAdMobBinary.json"

 

Xcodeを11.3.1から11.5にアップデートして、ライブラリもアップデートをして、いざビルドしようとすると以下のエラーが出ました。

ld: framework not found FirebaseInstanceID
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Carthageでの導入がダメなのかと思い、CocoaPodsで導入する方法も試しましたが、結局このエラーがでてしまいダメでした。

 

Cartfile.resolved でバージョンの変化を確認してみました。

# アップデート前
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAdMobBinary.json" "6.5.0"
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAnalyticsBinary.json" "6.5.0"
# アップデート後
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAdMobBinary.json" "6.28.1"
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAnalyticsBinary.json" "6.28.1"

6.5.0 から 6.28.1 へのアップデートでした。

解決方法

ただただエラー文通りの原因でした。FirebaseInstanceID というフレームワークが 6.28.1 にはありません。

 

まずは既に入っている FirebaseInstanceID.framework を削除します。

その後ビルドすると以下のようなエラーになりました。

アップデートで増えたやつを追加してやります。

このとき Do Not Embed にしておかないとビルド後にエラーが出ます。

 

これで無事に起動することができました。初歩的ィ…

 

おわりに

もう何年も前から Carthage を触っているはずなのに、数ヶ月離れているだけでこんなにわからなくなるもんですかね。これで1日溶かしているし、ほんとただの初心者だよ…

最近は、Swiftを書くことやiOSについての記事を書くことが怖くなってしまっていました。数ヶ月離れて、ようやく向き合う気になれたのでこれから初心者に戻って頑張っていきますね。

それではでは。

 

Swift
コメントは認証制です。詳しくは下記の注意をお読みください。お気軽にコメントお願いします!

Write a Comment

コメント時の注意

「Twitter」「Facebook」「Google+」「WordPress」のいずれかのアカウントをお持ちの方は各アカウントと連携することでコメントできます。 コメントしたことはSNSに流れませんので、アカウントをお持ちの方はこちらの方法でコメントを投稿して下さると嬉しいです。 アカウントをお持ちでない方はメールアドレスで投稿することができます。 初回コメント時は承認後に表示されます。

Related Memo...

UITableView.RowAnimation の .none はアニメーションするよ

UITableView.RowAnimation の .none はアニメーションがnoneなわけじゃなく、デフォルトの設定を使うよという意味らしい。

The inserted or deleted rows use the default animations.

なのでアニメーションしちゃう。今更の気づき。

 

iOS

UINavigationController + UIScrollView の組み合わせで使っている時に謎の余白ができる時

UINavigationController + UIScrollView の組み合わせで使っていて、UIScrollView 上に AutoLayout で上下左右0で View を設置しているのに、30px程度上にずれてしまうとき。

`navigationController.navigationBar.isTranslucent = false` にすると直るかもしれない。

ScrollView上のコンテンツとNavigationBarの重なっているところが透過していたら多分これで直せるはず。

通常のターゲットではちゃんと動いているのに、iOSSnapshotTestCase を用いたテストでだけこの対応が必要なのよくわからないけれど。。。

iOS

記事を書くほどでもないけれどメモっておきたいこと

テスト投稿。

例えばiphone7 の画面サイズ

750 × 1334
半分375 × 667

iOS
more