I am trying to configure the Firebase using FirebaseApp.configure()
but facing the following crash:
*** Terminating app due to uncaught exception 'com.firebase.installations', reason: 'The default FirebaseApp instance must be configured before the defaultFirebaseApp instance can be initialized. One way to ensure that is to call `[FIRApp configure];` (`FirebaseApp.configure()` in Swift) in the App Delegate's `application:didFinishLaunchingWithOptions:` (`application(_:didFinishLaunchingWithOptions:)` in Swift).'
*** First throw call stack:
(0x195b7180c 0x195899fa4 0x195a66f84 0x1081413dc 0x107c59bc0 0x107c59aec 0x10274daa0 0x10274d5c0 0x10274c8ec 0x10274c310 0x10274c25c 0x10244b52c 0x10244b434 0x10244b5c4 0x199bda698 0x102451ad4 0x195974360)
libc++abi.dylib: terminating with uncaught exception of type NSException
I tried calling FirebaseApp.configure()
from inside didFinishLaunchingWithOptions
and inside the init
of AppDelegate
as well:
override init() {
super.init()
// Setting up the firebase instance
setupFirebase()
}
private func setupFirebase() {
FirebaseApp.configure()
Messaging.messaging().delegate = self
}
It's crashing at this point -
I am using import FirebaseCore
& import FirebaseMessaging
inside my AppDelegate
The Podfile.lock
looks like this
Firebase/Core (6.20.0):
- Firebase/CoreOnly
- FirebaseAnalytics (= 6.3.1)
- Firebase/CoreOnly (6.20.0):
- FirebaseCore (= 6.6.4)
- Firebase/Database (6.20.0):
- Firebase/CoreOnly
- FirebaseDatabase (~> 6.1.4)
- Firebase/Firestore (6.20.0):
- Firebase/CoreOnly
- FirebaseFirestore (~> 1.11.2)
- Firebase/Messaging (6.20.0):
- Firebase/CoreOnly
- FirebaseMessaging (~> 4.3.0)
- FirebaseAnalytics (6.3.1):
- FirebaseCore (~> 6.6)
- FirebaseInstallations (~> 1.1)
- GoogleAppMeasurement (= 6.3.1)
- GoogleUtilities/AppDelegateSwizzler (~> 6.0)
- GoogleUtilities/MethodSwizzler (~> 6.0)
- GoogleUtilities/Network (~> 6.0)
- "GoogleUtilities/NSData+zlib (~> 6.0)"
- nanopb (= 0.3.9011)
- FirebaseAnalyticsInterop (1.5.0)
- FirebaseAuthInterop (1.1.0)
- FirebaseCore (6.6.4):
- FirebaseCoreDiagnostics (~> 1.2)
- FirebaseCoreDiagnosticsInterop (~> 1.2)
- GoogleUtilities/Environment (~> 6.5)
- GoogleUtilities/Logger (~> 6.5)
- FirebaseCoreDiagnostics (1.2.2):
- FirebaseCoreDiagnosticsInterop (~> 1.2)
- GoogleDataTransportCCTSupport (~> 2.0)
- GoogleUtilities/Environment (~> 6.5)
- GoogleUtilities/Logger (~> 6.5)
- nanopb (~> 0.3.901)
- FirebaseCoreDiagnosticsInterop (1.2.0)
- FirebaseDatabase (6.1.4):
- FirebaseAuthInterop (~> 1.0)
- FirebaseCore (~> 6.0)
- leveldb-library (~> 1.22)
- FirebaseFirestore (1.11.2):
- abseil/algorithm (= 0.20190808)
- abseil/base (= 0.20190808)
- abseil/memory (= 0.20190808)
- abseil/meta (= 0.20190808)
- abseil/strings/strings (= 0.20190808)
- abseil/time (= 0.20190808)
- abseil/types (= 0.20190808)
- FirebaseAuthInterop (~> 1.0)
- FirebaseCore (~> 6.2)
- "gRPC-C++ (= 0.0.9)"
- leveldb-library (~> 1.22)
- nanopb (~> 0.3.901)
- FirebaseInstallations (1.1.0):
- FirebaseCore (~> 6.6)
- GoogleUtilities/UserDefaults (~> 6.5)
- PromisesObjC (~> 1.2)
- FirebaseInstanceID (4.3.2):
- FirebaseCore (~> 6.6)
- FirebaseInstallations (~> 1.0)
- GoogleUtilities/Environment (~> 6.5)
- GoogleUtilities/UserDefaults (~> 6.5)
- FirebaseMessaging (4.3.0):
- FirebaseAnalyticsInterop (~> 1.5)
- FirebaseCore (~> 6.6)
- FirebaseInstanceID (~> 4.3)
- GoogleUtilities/AppDelegateSwizzler (~> 6.5)
- GoogleUtilities/Environment (~> 6.5)
- GoogleUtilities/Reachability (~> 6.5)
- GoogleUtilities/UserDefaults (~> 6.5)
- Protobuf (>= 3.9.2, ~> 3.9)
Here's what the stack trace looks like:
thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
frame #0: 0x0000000195969ec4 libsystem_kernel.dylib`__pthread_kill + 8
frame #1: 0x0000000195885774 libsystem_pthread.dylib`pthread_kill$VARIANT$mp + 112
frame #2: 0x00000001957d9844 libsystem_c.dylib`abort + 100
frame #3: 0x00000001959327d4 libc++abi.dylib`abort_message + 128
frame #4: 0x00000001959329c4 libc++abi.dylib`demangling_terminate_handler() + 296
frame #5: 0x000000019589a258 libobjc.A.dylib`_objc_terminate() + 124
frame #6: 0x000000019593f304 libc++abi.dylib`std::__terminate(void (*)()) + 16
frame #7: 0x000000019593ec58 libc++abi.dylib`__cxxabiv1::failed_throw(__cxxabiv1::__cxa_exception*) + 32
frame #8: 0x000000019593ec18 libc++abi.dylib`__cxa_throw + 124
frame #9: 0x000000019589a0d0 libobjc.A.dylib`objc_exception_throw + 356
frame #10: 0x0000000195a66f84 CoreFoundation`+[NSException raise:format:] + 108
* frame #11: 0x0000000107f993dc LocationTrackingFW`+[FIRInstallations installations](self=FIRInstallations, _cmd="installations") at FIRInstallations.m:159:5
frame #12: 0x0000000107ab1bc0 LocationTrackingFW`+[FIRAnalytics updateFirebaseInstallationID] + 32
frame #13: 0x0000000107ab1aec LocationTrackingFW`+[FIRAnalytics startWithConfiguration:options:] + 564
frame #14: 0x00000001025cdac0 Field Service`-[FIRApp configureCore](self=0x0000000280a1b510, _cmd="configureCore") at FIRApp.m:364:9
frame #15: 0x00000001025cd5e0 Field Service`+[FIRApp addAppToAppDictionary:](self=0x00000001035a2f20, _cmd="addAppToAppDictionary:", app=0x0000000280a1b510) at FIRApp.m:317:7
frame #16: 0x00000001025cc90c Field Service`+[FIRApp configureWithName:options:](self=0x00000001035a2f20, _cmd="configureWithName:options:", name=@"__FIRAPP_DEFAULT", options=0x0000000280a1b750) at FIRApp.m:202:5
frame #17: 0x00000001025cc330 Field Service`+[FIRApp configureWithOptions:](self=0x00000001035a2f20, _cmd="configureWithOptions:", options=0x0000000280a1b750) at FIRApp.m:145:3
frame #18: 0x00000001025cc27c Field Service`+[FIRApp configure](self=0x00000001035a2f20, _cmd="configure") at FIRApp.m:131:3
frame #19: 0x00000001022cb54c Field Service`AppDelegate.setupFirebase(self=0x0000000109f08a00) at AppDelegate.swift:272:21
frame #20: 0x00000001022cb454 Field Service`AppDelegate.init() at AppDelegate.swift:42:9
frame #21: 0x00000001022cb5e4 Field Service`@objc AppDelegate.init() at <compiler-generated>:0
frame #22: 0x0000000199bda698 UIKitCore`UIApplicationMain + 1728
frame #23: 0x00000001022d1af4 Field Service`main at AppDelegate.swift:21:7
frame #24: 0x0000000195974360 libdyld.dylib`start + 4
Been stuck on this for hours now. Can anyone please help me out
Firebase team member here. Most people who are running into this error have accidentally linked two copies of Firebase into their application, usually one in the app target and one in a dynamic framework dependency target. You can check if you have two copies of Firebase linked into your app by checking your runtime logs for duplicate class definition warnings. If you see warnings like
objc[40943]: Class FIRApp is implemented in both
~/Library/Developer/Xcode/DerivedData/FrameworkTest-apqjxlyrxvkbhhafhaypsbdquref/Build/Products/Debug-iphonesimulator/DynamicFramework.framework/DynamicFramework
(0x10b2a87f8) and
~/Library/Developer/CoreSimulator/Devices/4821F959-24A6-4D78-A102-4C5703103D99/data/Containers/Bundle/Application/F017D210-113A-4DAF-9E17-BDE455E71E06/FrameworkTest.app/FrameworkTest
(0x10ad2d348). One of the two will be used. Which one is undefined.
then that means you have two copies of Firebase in your app runtime. Previously this would not crash your app, but could lead to other undefined behavior like dropped Analytics events. We recently made a change in FirebaseInstallations that caused this to crash at launch. If you downgrade your Firebase version dependency, you will still have undefined behavior even if your app does not crash at launch.
Unfortunately, you'll either have to abandon the dynamic framework approach and link all dependencies directly into your app or you'll have to change your dynamic framework into a static one. In the future, we'll explore distributing Firebase as a dynamic dependency so that users can link it into dynamic frameworks without worry of duplicating class definitions at runtime.
See this doc on the Firebase iOS SDK GitHub for more details.
Edit: You can now choose to link Firebase either statically or dynamically via CocoaPods. See this document for more details: https://firebase.google.com/docs/ios/link-firebase-static-dynamic
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With