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

Posted

技术标签:

【中文标题】如何根据 Firebase pod 制作自定义 pod 库?【英文标题】:How to make a custom pod library depending on Firebase pods? 【发布时间】:2016-12-05 16:29:22 【问题描述】:

我有一个非常简单的 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 成功,可选

【问题讨论】:

你是在xcode中创建项目的吗?如果有,你选择了什么样的项目? 该库不是用 XCode 创建的,而是用pod lib create 【参考方案1】:

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

如果您真的想通过 CocoaPods 分发一个封装 Firebase 的库,您应该遵循相同的方法,但值得注意的是,pod lib lint 在 FirebaseUI 中失败,即使它仍然提供。

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

【讨论】:

我很擅长这些警告。我还尝试分发 firebase 二进制文件(它们托管在我的存储库中),但我无法生成真正有效的东西。 @azmeuk 我也有同样的问题。你有什么可行的解决方案吗?

以上是关于如何根据 Firebase pod 制作自定义 pod 库?的主要内容,如果未能解决你的问题,请参考以下文章

(Swift 4) 如何在 firebase 中生成自定义自动 id?

可以根据身份验证状态自定义Firebase托管行为(例如,重定向)吗?

在 Xcode 中创建自定义模板 - 如何根据复选框制作所需的选项?

firebase pod 安装的版本低于存在的最新版本

k8s部署-37-带你了解并自定义pod调度策略(上)

FirebaseInstanceID 无法使用 cocoapods 正确安装