LoginSignup
2
1

More than 3 years have passed since last update.

FirebaseをCarthageで管理する XcodeGen編

Last updated at Posted at 2020-03-06

Firebaseの管理をCocoaPodsからCarthageに移し替える作業があったのでまとめておきます

環境

Xcode: 11.2.1
Carthage: 0.34.0
XcodeGen: 2.13.1

手順

Firebaseの公式ドキュメントにCarthage管理のやり方が記載されているのでこちらに沿って移行していきます

今回はFirebaseAuthのみ追加するパターンです

CartFileにFirebaseAuthのバイナリを書き込みます
※ アナリティクスのバイナリは必須のようですのでFirebaseAnalyticsBinaryも追加します

CartFile
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/に追加されているframeworkdependenciesに書き込んでいきます
OTHER_LDFLAGS: $(inherited) $(OTHER_LDFLAGS) -ObjCをドキュメンに沿って追加して
Firebase.frameworkのみlinkを外しておきます

project.yml
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を確認するとFirebaseAnalyticsFirebaseAuthの最新版が入っていました

Cartfile.resolved
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"

最新版同士では依存関係がうまくいかないようなのでバージョンを指定します
依存関係がうまくいくバージョンを確認する方法はCocoaPodsFirebaseをインストールしたときのPodfile.lockでインストールされているバージョンを見て確認しました(もっと良い方法があるかもしれません)

バージョンを指定したCartFile

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

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1