这是针对 Firebase 6.26.0 和 6.27.0(我都尝试过,原因将变得清晰)
我有一个 Swift 应用程序,我试图将其从当前的整体分解为模块,但到目前为止,我还无法通过在每个单独的模块中安装 Firebase pod 来跨模块(即框架)公开 Firebase 类。它仅在只有一个现有库并且该库安装在应用程序目标中并在 AppDelegate 中实例化时才有效。
有谁知道是否可以在单个工作区中跨多个模块实施 Firebase?
预期成绩
Firebase 类将向多模块 Swift 应用程序中的所有模块公开,其中存在一个或多个 Firebase 库副本,允许所有模块调用 Firebase 方法并在 FirebaseApp 的单个全局实例中实现 Firebase 类。
实际结果
Firebase 要么因为工作区中存在多个 Firebase 库而拒绝实例化,要么当只存在一个库时,Firebase 类无法向工作区中的其他模块公开。
我所做的
在需要它们的每个模块中安装单独的 Firebase pod。启动时,我收到此错误:
.
The default FirebaseApp instance must be configured before the defaultFirebaseApp instance can be initialized
.
根据 Firebase 团队成员在另一篇 StackOverflow 帖子上的回答,这是由于工作区中存在多个 Firebase 库造成的。
仅安装了一个 pod 来创建一个“FirebaseProxy”模块,应用程序目标和所有其他模块都可以共享该模块。通过使用类型别名和扩展,我可以让类实现 Firebase 类,而不必暴露于实际的 Firebase 库,例如:
import Firebase
public typealias FirebaseUserProxy = Firebase.User
public …Run Code Online (Sandbox Code Playgroud)