Firebaseの管理をCocoaPodsからCarthageに移し替える作業があったのでまとめておきます
環境
Xcode: 11.2.1
Carthage: 0.34.0
XcodeGen: 2.13.1
手順
Firebaseの公式ドキュメントにCarthage管理のやり方が記載されているのでこちらに沿って移行していきます
今回はFirebaseAuthのみ追加するパターンです
CartFileにFirebaseAuth
のバイナリを書き込みます
※ アナリティクスのバイナリは必須のようですのでFirebaseAnalyticsBinary
も追加します
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAuthBinary.json"
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAnalyticsBinary.json"
書き込めたらCarthageを更新
$ carthage update --platform ios
次はproject.ymlを更新します
Carthage/Build/iOS/
に追加されているframework
をdependencies
に書き込んでいきます
OTHER_LDFLAGS: $(inherited) $(OTHER_LDFLAGS) -ObjC
をドキュメンに沿って追加して
Firebase.framework
のみlink
を外しておきます
targets:
YourAppName:
settings:
base:
OTHER_LDFLAGS: $(inherited) $(OTHER_LDFLAGS) -ObjC
dependencies:
- framework: Carthage/Build/iOS/Firebase.framework
embed: false
link: false
- framework: Carthage/Build/iOS/FIRAnalyticsConnector.framework
embed: false
- framework: Carthage/Build/iOS/FirebaseAnalytics.framework
embed: false
- framework: Carthage/Build/iOS/FirebaseAuth.framework
embed: false
- framework: Carthage/Build/iOS/FirebaseCore.framework
embed: false
- framework: Carthage/Build/iOS/FirebaseCoreDiagnostics.framework
embed: false
- framework: Carthage/Build/iOS/GoogleAppMeasurement.framework
embed: false
- framework: Carthage/Build/iOS/GoogleUtilities.framework
embed: false
- framework: Carthage/Build/iOS/GTMSessionFetcher.framework
embed: false
- framework: Carthage/Build/iOS/nanopb.framework
embed: false
framework達の依存関係がうまくいっていない
これでビルドしたところXcodeでエラーがでました
framework同士の依存関係が合っていないため、あるはずのframeworkが見つからないというエラーでした
Cartfile.resolved
を確認するとFirebaseAnalytics
とFirebaseAuth
の最新版が入っていました
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAnalyticsBinary.json" "6.18.0"
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAuthBinary.json" "6.18.0"
最新版同士では依存関係がうまくいかないようなのでバージョンを指定します
依存関係がうまくいくバージョンを確認する方法はCocoaPods
でFirebase
をインストールしたときのPodfile.lock
でインストールされているバージョンを見て確認しました(もっと良い方法があるかもしれません)
バージョンを指定したCartFile
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAuthBinary.json" == 6.5.0
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAnalyticsBinary.json" == 6.5.0
これでうまくビルドできました
CarthageでFirebaseを管理する場合、Podsの用にうまいことframeworkのバージョンを管理してくれないようでした
参考にした記事: https://qiita.com/noppefoxwolf/items/101a9f19d2d6b5d4447b