无法在 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 应用无法构建