首页 > 解决方案 > 使用 CocoaPods 和 SwiftPM 实现的 FBLPromise 崩溃

问题描述

一段时间以来,我们一直在从 CocoaPods 迁移,但并不是每个依赖项都进行了转换。像火力基地

我有一个关于重复符号的类似问题,但现在我面临一些新问题,这可能是因为我在 SwiftPM 和 CocoaPods 中都使用了依赖项。

运行我的(示例)项目后,它崩溃了:

-[FBLPromise firebaseInstallationID]: unrecognized selector sent to instance 0x600003f5a430

顶部有警告:

objc[93047]: Class FBLPromise is implemented in both
/xxx/SampleProject.app/Frameworks/FBLPromises.framework/FBLPromises (0x10b3f09a8) and 
/xxx/SampleProject.app/SampleProject (0x10af736f0).
One of the two will be used. Which one is undefined.

在我更新到 Firebase SDK v6.26.0 之前,我只会收到第一个警告,但自从更新后它崩溃了。

我看到了一个关于如何在库中使用 Firebase的文档和一个关于类似崩溃的GitHub 问题。但是除了降级之外,似乎没有任何方法可以解决此崩溃。

我上传了一个示例项目:https ://github.com/basvankuijck/SampleProjectFirebaseCrash 。

删除 SwiftPM Promises 依赖项不是一种选择,因为实际项目正在使用对 Promises 具有依赖项的 SwiftPM 依赖项。

Podfile没有什么花哨的,SampleProject 只使用一个 SwiftPM 依赖项

有谁知道如何让 SwiftPM 和 CocoaPods 很好地协同工作,尤其是中间的 Firebase?

标签: iosfirebasecocoapodsswiftpm

解决方案


我在使用 Firebase 和 FBLPromise 时遇到了完全相同的问题。对我来说,这是因为我在 podfile 中添加了 Firebase/FireStore,但其余的 FIrebase 依赖项来自 SPM。在我的其他 SPM 依赖项中,还有 FBLPromise。

要修复它,我必须从 SPM 中删除 FIrebase 包,然后使用 FIrestore 和我可能需要从 Firebase 获得的其他依赖项再次添加它。

没有其他解决方案对我有用。


推荐阅读