如何根据 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_PATHS
、USER_HEADER_SEARCH_PATHS
、SWIFT_INCLUDE_PATHS
,但我从来没有成功过。
我的示例库is hosted on github 和完整的错误日志可用on Travis。随意克隆它,并测试pod lib lint
和pod 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托管行为(例如,重定向)吗?