XcodeGen使用Carthage管理Firebase


我必须总结将Firebase管理从CocoaPods转移到迦太基的工作

环境

Xcode:11.2.1
迦太基:0.34.0
XcodeGen:2.13.1

程序

Firebase官方文档描述了如何管理迦太基,因此我们将在这里进行介绍

这是仅添加Firebase身份验证的模式

FirebaseAuth二进制文件写入CartFile
*似乎需要分析二进制文件,因此还要添加FirebaseAnalyticsBinary

购物车文件

1
2
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAuthBinary.json"
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAnalyticsBinary.json"

编写

后更新迦太基

1
$ carthage update --platform ios

接下来,更新project.yml
将添加到Carthage/Build/iOS/framework写到dependencies
OTHER_LDFLAGS: $(inherited) $(OTHER_LDFLAGS) -ObjC与文档一起添加
仅针对Firebase.framework

删除link

project.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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

框架的依赖项不起作用

当我用它构建它时,我在Xcode中出现错误
出现错误,因为框架之间的依赖项不匹配,所以找不到应该存在的框架

当我检查

Cartfile.resolved时,包含了FirebaseAnalyticsFirebaseAuth的最新版本

Cartfile.resolved

1
2
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

具有指定版本

购物车文件

1
2
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很有用

参考文章:https://qiita.com/noppefoxwolf/items/101a9f19d2d6b5d4447b