无法在 CocoaPod 中导入 Firebase

Posted

技术标签:

【中文标题】无法在 CocoaPod 中导入 Firebase【英文标题】:Cannot import Firebase in CocoaPod 【发布时间】:2016-11-06 20:02:55 【问题描述】:

我正在创建一个我想从中导入 Firebase 的 CocoaPod。我得到了错误:

“没有这样的模块'Firebase'”

当我将 import Firebase 添加到我的 pod 中的 Swift 文件时。

我的 CocoaPod Foo 的 pod 规范文件,Foo.podspec,包含:

s.dependency 'Firebase', '~> 3.6'

【问题讨论】:

“我将 import Firebase 添加到我的 pod 中的 Swift 文件中。”你能解释一下吗? s.dependency 只应在其他人使用您的 pod 时告诉您,必要时它将导入 Firebase(避免重复导入)。但是不清楚“没有这样的模块”错误是否意味着这是您在当前 pod 中的用途。声明 s.dependency 确实会进行导入。您可能必须在 pod 中使用 podfile 来设置 XCode 编译所需的文件。 我不应该在消耗我的 CocoaPod 的 Podfile 中复制我的依赖项。声明s.dependency应该做导入 【参考方案1】:

Firebase 为其最新版本的 pod 制作的 podspec 中的模块映射似乎存在问题(请参阅https://github.com/CocoaPods/CocoaPods/issues/6138)。

我目前正在开发一个基于 Firebase 的聊天系统,我已将其抽象为私有 CocoaPod。如果我在我的代码/ podspec 中删除了 Firebase 的所有痕迹,那么所有其他 Pod 都会完美导入。在解决这个问题之前,我不知道我们能做些什么。

干杯!

【讨论】:

谢谢。我不知道你是否提交了一张票,所以我继续提交了一张。奇怪的是,没有办法共享票的 URL。我会在这个帖子中更新我的漏洞。【参考方案2】:

我最近遇到了同样的问题,我决定在我的开发 pod 和使用它的应用程序中使用 firebase 的解决方案是在 Xcode 中设置 firebase sdk,以便可以在与系统框架相同。

    下载the firebase sdk 将您需要的框架移至 Xcode /Applications/Xcode.app/Contents/Developer/Library/Frameworks/

    设置您的 pod 规范,以便它知道框架在哪里,并添加一些必需的依赖项。

    # Specify what libraries this depends on.
    s.libraries = [
      'c++', # FirebaseAnalytics.
      'icucore', # FirebaseDatabase.
      'sqlite3', # FirebaseAnalytics.
      'z', # FirebaseAnalytics.
    ]
    
    # Specify what frameworks this depends on.
    s.frameworks = [
      'AddressBook', # FirebaseAnalytics.
      'AdSupport', # FirebaseAnalytics.
      'CFNetwork', # FirebaseDatabase.
      'SafariServices', # FirebaseAnalytics.
      'Security', # FirebaseAnalytics, FirebaseAuth, FirebaseDatabase.
      'StoreKit', # FirebaseAnalytics.
      'SystemConfiguration', # FirebaseAnalytics, FirebaseDatabase.
      'FirebaseAnalytics',
      'FirebaseInstanceID',
      'FirebaseCore',
      'FirebaseCoreDiagnostics',
      'FirebaseNanoPB',
      'GoogleToolboxForMac',
      'FirebaseAuth',
      'GTMSessionFetcher',
      'FirebaseDatabase'
    ]
    s.xcconfig =  'FRAMEWORK_SEARCH_PATHS' => '/Applications/Xcode.app/Contents/Developer/Library/Frameworks/**' 
    
    # LDFLAGS required by Firebase dependencies.
    s.pod_target_xcconfig = 
      'OTHER_LDFLAGS' => '$(inherited) -ObjC',
    
    

此示例仅使用 firebase Analytics、Auth 和 Database,但我确信也可以添加其他框架。这不是最好的解决方案,但它适用于我的情况。

【讨论】:

以上是关于无法在 CocoaPod 中导入 Firebase的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 升级后无法在 Xcode 中导入桥接头文件

将 Objective-C 框架(CocoaPod)导入 Swift?

在 Swift Playground 中导入使用 Firebase 的框架(“缺少必需的模块 'Firebase'”)

添加 Firebase/Messaging CocoaPod 会导致 iOS 应用无法构建

找不到在 Angular 中导入 Firebase 身份验证

使用 vuejs 时,没有在 html 文件中导入 firebase 脚本标签