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

时间:2016-12-05 16:29:23

标签: 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家伙和firebase人员的相关cocoapods bug report,但其中没有可行的例子。

我应该在.podspec文件中添加什么内容:

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

1 个答案:

答案 0 :(得分:4)

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

如果你真的想通过CocoaPods分发一个包装Firebase的库,你应该遵循相同的方法,尽管值得注意的是pod lib lint对于FirebaseUI来说是失败的,即使它仍在运送。

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