在 swift iOS 中面临“必须配置默认 FirebaseApp 实例”问题

Posted

技术标签:

【中文标题】在 swift iOS 中面临“必须配置默认 FirebaseApp 实例”问题【英文标题】:Facing 'The default FirebaseApp instance must be configured' issue in swift iOS 【发布时间】:2020-09-04 14:09:34 【问题描述】:

在我们的项目中,我们使用了多个目标,并且我们为 appDelegate 类启用了两个目标的 Target 成员资格。在多个目标中运行以下 podfile 时,我面临崩溃问题:

target ‘SampleApp’ do
    
 use_frameworks!
pod 'FirebaseCrashlytics', '4.5.0'
pod 'FirebaseAnalytics', '6.8.0'
pod 'FirebaseCore', '6.10.1'
pod 'FirebaseMessaging', '4.6.2'
    
end
    
    

target ‘SampleAppSDK’ do 
 use_frameworks!
pod 'FirebaseCrashlytics', '4.5.0'
pod 'FirebaseAnalytics', '6.8.0'
pod 'FirebaseCore', '6.10.1'
pod 'FirebaseMessaging', '4.6.2'
    
end

我可以在 AppDelegate 类中导入 FirebaseCrashlytics,并且在 didFinishLaunchingWithOptions 函数中添加了“FirebaseApp.configure()”。运行应用程序时崩溃并在控制台中显示以下错误。

由于未捕获的异常而终止应用程序 'com.firebase.installations',原因:'默认的 FirebaseApp 必须先配置实例,然后才能使用 defaultFirebaseApp 实例 被初始化。确保这一点的一种方法是在 App 中调用[FIRApp configure];(Swift 中为FirebaseApp.configure()) 代表application:didFinishLaunchingWithOptions:application(_:didFinishLaunchingWithOptions:) 在 Swift 中)。'

注意:如果我在一个目标中添加上述依赖项,我可以运行项目,但是我们无法在 firebase 控制台中看到崩溃,我们需要添加 firebase 依赖项支持多个目标:

有人知道这个问题吗?

【问题讨论】:

【参考方案1】:

我们还有多个目标,我们的 Podfile 使用以下结构。

abstract_target 'AllPods' do
   target 'Appios' do
      pod 'Firebase/Crashlytics'
      pod 'Firebase/Analytics'
   end

   target 'AppTVOS' do
      pod 'Firebase/Crashlytics'
      pod 'Firebase/Analytics'
   end

   target 'AppWatch' do
   end
end

这只是一个大纲,缺少重要的细节,但与我们第一次尝试的效果相当。

【讨论】:

以上是关于在 swift iOS 中面临“必须配置默认 FirebaseApp 实例”问题的主要内容,如果未能解决你的问题,请参考以下文章

CAShapeLayer 在 XIB swift iOS 中不可见

Apollo graphQL:在 iOS swift 中使用自定义标量时解码数组时出错

PromiseKit ios Swift 闭包返回类型问题

Crashlytics iOS - 第 0 行崩溃 - Swift 来源

文件目录更改每次重启 Swift iOS

将 swift 数组解析为有效的 json