ios - 如何根据 Firebase pod 制作自定义 pod 库?

标签 ios firebase cocoapods

我有一个非常简单的 swift 3 pod 库,具体取决于 Firebase pod。它是使用 pod lib create 创建的,库中唯一的代码行是 import Firebase。尽管如此,Firebase 似乎并未被检测到。

-> FoobarLib (0.1.0)
    - ERROR | [iOS] xcodebuild: Returned an unsuccessful exit code. You can use `--verbose` for more information.
    - ERROR | [iOS] xcodebuild:  ~/FoobarLib/Classes/Foobar.swift:1:8: error: no such module 'Firebase'

我想我的 .podspec 文件配置不正确。我尝试了使用 s.dependency Firebase 进行简单的 pod 依赖,并尝试 embed the Firebase frameworks在我的图书馆里。我已经尝试过 FRAMEWORK_SEARCH_PATHSUSER_HEADER_SEARCH_PATHSSWIFT_INCLUDE_PATHS,但我从来没有得到任何工作。

我的示例库 is hosted on github并且完整的错误日志可用 on Travis 。请随意克隆它,并测试 pod lib lintpod install --project-directory=Example

我看到了这个相关的cocoapods bug report涉及 cocoapods 人员和 firebase 人员,但其中没有有效的示例。

我应该在 .podspec 文件中放入什么:

  • pod install --project-directory=Example 成功,并生成有效的 XCode 项目。即我可以打开它,编译它而无需进一步配置。
  • pod lib lint 成功(可选)

最佳答案

即使您设法让 pod lib lint 通过,您也会遇到将 Firebase 集成为依赖项的依赖项的问题,因为它目前作为静态库提供。 FirebaseUI通过分发二进制文件而不是从源代码构建 CocoaPods 来解决这个问题,但这并非没有自己的警告(即使用 FirebaseUI 的人也不能使用依赖于 Firebase 的另一个库并正确解析应该使用的 Firebase 版本)。您链接的问题对此进行了更详细的讨论。

如果您确实想通过 CocoaPods 分发一个封装 Firebase 的库,您应该遵循相同的方法,但值得注意的是 pod lib lint 对于 FirebaseUI 会失败,尽管它无论如何都会发布。

CocoaPods 很快(截至 2017 年 10 月)将添加一条规则,允许在其他静态框架(包括闭源框架)之上构建静态框架。这将使在其他封闭静态 objc 库之上构建 objc 库变得更加容易,但 Swift 静态库支持仍在进行中。

关于ios - 如何根据 Firebase pod 制作自定义 pod 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40978856/

相关文章:

firebase - 是否可以使用 Firebase 的 firestore 设置存储规则?

react-native - React Native : Pod install leads to different versions in podfile. 锁比 package.json

ios - Firestore 访问规则在拒绝访问时不会报告任何错误

ios - resignFirstResponder 键盘不会在 segue 之前消失

ios - 如何将多个对象添加到表格 View 单元格?

ios - 带有大标题的应用程序在滚动时抖动

ios - 在不同设备上使用同一帐户数据不同步

android - FCM onMessageReceived 在应用程序运行时返回空白消息和标题

javascript - 当没有公开 viewController 时,如何将 cocoapod 转换为 typescript ?

ios - Flutter 不断为 iOS 导入旧版本的 Plugin