I realize macOS support isn't there, but given the community has provided support for macOS (somewhat), is there a way to make FirebaseCrash work with macOS? I'm porting my code over from Fabric to Firebase given Fabric is on its last leg and the Google wants us to move us all to Firebase. I'm surprised the support for macOS isn't there as it was in Fabric.
What are we supposed to do when Fabric dies in 2019?
Hi @guidedways - FirebaseCrash was deprecated in favor of Crashlytics. You can find the documentation here.
We're working on tightening the integration on the SDK side, and in the meantime you can depend on the FirebaseCore pod directly (instead of Firebase/Core) for macOS projects.
Let me know if that's what you're looking for, or you have more questions.
Thanks Ryan
In that case, the instructions are confusing. There's conflicting implied information in the docs. I realise it mentions we need to be using Crashlytics, however the "Crash Free Users" section in Firebase instructs us to use Firebase.
I also dislike using Pods (it won't work in our setup) and the manual process of including Frameworks hasn't quite worked. There's in fact no @import Firebase (which the docs point to everywhere) but instead @import FirebaseCore worked for me. I couldn't get the manually imported framework to work with macOS either as a sub-framework is looking for UIApplication and the compiler stops at that point, with an unresolved reference to this symbol.
On top of this, we were already using GTMAppAuth in one of our frameworks which then uses GTMFetcherSession. If I now try and include FirebasePerformance into our iOS variant, the app won't compile given there are now dozens of duplicate symbols. It's not going to be easy removing GTMFetcherSession from being included in our build given GTMAuth depends on it. I'm sort of stuck in a cyclic reference loop (apart from issues with macOS not compiling FirebaseCore).
I wish Google would improve upon Fabric instead of this unsolicited exodus towards Firebase. I don't want to be using any other Firebase functionality.
This is great feedback, thanks for all the info.
For the "Crash Free Users" section, are you referring to this page, or a different doc? I see a deprecation notice at the top, but we could have other documentation that hasn't been updated. Any help tracking down old or outdated docs would be greatly appreciated!
Re: no @import Firebase available - pulling from the zip file integration instructions, you should be able to drag the module.modulemap file into your project and update your User Header Search Paths to contain the directory that contains your module map. If that doesn't work, let us know and we can see what's broken about it.
I couldn't get the manually imported framework to work with macOS either as a sub-framework is looking for UIApplication and the compiler stops at that point, with an unresolved reference to this symbol.
I'd be interested to know which sub-framework was looking for UIApplication - do you know off hand what framework it was, or are you able to find out? We should be wrapping our own code to ensure it's not trying to use UIApplication when it's not. There was a bug not too long ago where one usage accidentally slipped through - I wonder if it was at the same time or it's a different issue. One related note: Analytics does not currently support macOS, so only include the FirebaseCore.framework framework from the Analytics directory.
Re: GTMSessionFetcher and FirebasePerformance- unfortunately that's one of the downsides of manually integrating frameworks 馃槥one way to find a common version that works:
GTMAppAuth and FirebasePerformance pods (optionally locking the GTMAppAuth to the current version you're using),Podfile.lock and see what version GTMSessionFetcher, FirebasePerformance, and GTMAppAuth resolves to,Note: You'll also need to make sure the FirebaseCore version is from the same umbrella Firebase version.
Re: your last setup, the Firebase pod itself doesn't support macOS, but you can use pod FirebaseCore to include Core and that should work.
Thanks a lot Ryan! I've now undone all of my changes (since I spent an hour trying to get it to work), so I don't remember what framework it was that complained about UIApplication, however since I was only trying to manually import Firebase/Crash and Firebase/Analytics, it should be easy to reproduce at your end. I suppose it might have been Firebase/Analytics in case that isn't yet supported.
Regarding "Crash Free Users", no I'm referring to this image below. I see this in my dashboard and there's no metrics available for this. If this isn't supported, and if Firebase still uses Crashlytics behind the scenes, why do we have to 'link' our Fabric apps to Firebase and let go of Fabric? Is it because Fabric as a whole will simply cease to exist by mid-2019? I also don't see a number of other metrics anymore, such as Analytics in our iOS app after linking with Firebase.

Oh - regarding the duplicate symbols, I eventually bit the bullet and installed it via cocoa pods (yuck). Although that fixed the compile time errors, I now see several runtime errors as such:
objc[28764]: Class GTMSessionFetcher is implemented in both /private/var/containers/Bundle/Application/526A7E94-A131-46B1-9506-5A2034531905/OurAppiOS.app/Frameworks/OurApp.framework/BusyCore (0x10270dbc0) and /private/var/containers/Bundle/Application/526A7E94-A131-46B1-9506-5A2034531905/OurAppiOS.app/Frameworks/GTMSessionFetcher.framework/GTMSessionFetcher (0x101a52a48). One of the two will be used. Which one is undefined.
Can you share your Podfile? The duplicate class implementations issue with CocoaPods integration usually comes up when you've nested some targets and accidentally added the pods to both targets.
Sure
project '../OurProject.xcodeproj'
# Uncomment the next line to define a global platform for your project
platform :osx, '10.11'
def myPods
pod 'FirebaseCore'
#not available for macOS
#pod 'Firebase/Performance'
end
use_frameworks!
target 'OurApp Release' do
myPods
end
But as I mentioned, the duplicate class message isn't because there's a duplicate within your frameworks - we have a complex web of internal frameworks we use, and one of our internal frameworks already uses GTMAppAuth (as source) which already contains GTMSessionFetcher. There's no easy way around this as we cannot remove the dependency we have already (we've got a few modifications on top of the GTMAppAuth library as it's broken (by Google) a few times this year and our modifications make sure a broken implementation does not break our app (again).
Since your internal framework isn't managing its dependencies through CocoaPods, you won't be able to resolve this issue via CocoaPods. The easiest way to avoid the duplicate class dependencies is to just rename all the Google classes in your internal framework so they won't conflict with Firebase's version. Unfortunately any cleaner solution will be difficult since you're essentially mixing dependency management systems (manual and CocoaPods).
Thanks, that's a good idea.
Going back to the original post - I now have our mac app connected and configured with FirebaseCore however the online Console still thinks we haven't connected the app to the SDK :(
I wish there was equally good support for macOS and I hope this is coming soon.
Any news on Firebase Crashlytics support for MacOS?
I think with SwifUI there will be an influx of native macOS apps. For now I'm sticking to the old Crashlytics but when it sunsets (March of 2020) if Firebase doesn't support macOS I'll have to find an alternative.
Hey sorry we didn't update this. You can use Crashlytics on macOS and tvOS in the Firebase Console now. You need to set up the app as an iOS app in the console, but if you install:
pod 'Crashlytics'
pod 'FirebaseCore'
You can follow the instructions at https://firebase.google.com/docs/crashlytics/get-started?platform=ios to install it fully
Having installed the two pods mentioned above (Crahslytics and FirebaseCore) and following the instructions from https://firebase.google.com/docs/crashlytics/get-started?platform=ios
I'm having this exact same issue:
I now have our mac app connected and configured with FirebaseCore however the online Console still thinks we haven't connected the app to the SDK
Most helpful comment
Any news on Firebase Crashlytics support for MacOS?