Firebase-ios-sdk: Docs issue - with bitcode enabled, dSYMs always must be downloaded/uploaded post-distribution

Created on 26 Apr 2019  路  7Comments  路  Source: firebase/firebase-ios-sdk

This is a documentation issue, but I will follow template:

  • Xcode version: 10.2
  • Firebase SDK version: via pods 5.20.2
  • Firebase Component: Crashlytics (Auth, Core, Database, Firestore, Messaging, Storage, etc)
  • Component version: 3.12.0 (Pod version)

[REQUIRED] Step 3: Describe the problem

If I understand correctly, with bitcode enabled as you distribute an iOS app, the App Store will recompile the app, generating fresh dSYMs that no longer correspond to any dSYMs uploaded to Crashlytics during the normal build process.

That means Crashlytics will never have the correct dSYMs to decode crashes from production apps, until you download the new dSYMs from the App Store and upload the new ones to Crashlytics

The docs do not mention this.

My recommendation is to cross-link the crashlytics install docs with the help docs about missing dSYMs (which are effective in decoding the crash reports, for me), and secondarily to recommend Fastlane for it's ability to automatically fetch the dSYMs and upload them.

Reference stackoverflow answer (from me, corrections here or there happily accepted): https://stackoverflow.com/questions/54577202/how-to-run-upload-symbols-to-upload-dsyms-as-a-part-of-xcode-build-process/55796619#55796619

Steps to reproduce:

  1. Configure crashlytics in your app, ensure dSYM upload to Firebase+Crashlytics is working
  2. Enable bitcode in your iOS build as you distribute it to App Store - note: I understand this is current best practice
  3. Suffer a crash on your distributed application
  4. Go to Crashlytics console, notice there are dSYMs missing
crashlytics

Most helpful comment

Yes by "update manually" I meant via the Firebase console website :)
I'm now using the fastlane with the download_dsyms action, but in my opinion this is sometimes (if you are on another computer without Fastlane) more simple to let the possibility to do it from the web.
But I guess Firebase have a good reason to remove the manual upload from their website.

All 7 comments

I found a few problems with this issue:

  • I couldn't figure out how to label this issue, so I've labeled it for a human to triage. Hang tight.
  • This issue does not seem to follow the issue template. Make sure you provide all the required information.

Hi Mike,

Thanks for sharing the issue. I have opened an issue with the docs team to include the correct steps for developers to get crashes when bitcode is enabled on their app.

Tracked internally at b/131423358

Hi,
Since iOS13 was released, we're getting a lot of crashes in our app with missing dSYM files in Crashlytics. After downloading and inspecting the zip file with all the dSYM files from iTunes, we discovered that none of the Firebase related pods/.frameworks is present in the dSYM files/UUIDs.

We're using Cocoapods and these are the Firebase-related contents of the Podfile.lock:

  • Firebase/Core (6.9.0):

    • Firebase/CoreOnly

    • FirebaseAnalytics (= 6.1.2)

    • Firebase/CoreOnly (6.9.0):

    • FirebaseCore (= 6.3.0)

    • Firebase/Performance (6.9.0):

    • Firebase/CoreOnly

    • FirebasePerformance (~> 3.1.4)

    • Firebase/RemoteConfig (6.9.0):

    • Firebase/CoreOnly

    • FirebaseRemoteConfig (~> 4.4.1)

    • FirebaseABTesting (3.1.1):

    • FirebaseAnalyticsInterop (~> 1.3)

    • FirebaseCore (~> 6.1)

    • Protobuf (~> 3.8)

    • FirebaseAnalytics (6.1.2):

    • FirebaseCore (~> 6.3)

    • FirebaseInstanceID (~> 4.2)

    • GoogleAppMeasurement (= 6.1.2)

    • GoogleUtilities/AppDelegateSwizzler (~> 6.0)

    • GoogleUtilities/MethodSwizzler (~> 6.0)

    • GoogleUtilities/Network (~> 6.0)

    • "GoogleUtilities/NSData+zlib (~> 6.0)"

    • nanopb (~> 0.3)

    • FirebaseAnalyticsInterop (1.4.0)

    • FirebaseCore (6.3.0):

    • FirebaseCoreDiagnostics (~> 1.0)

    • FirebaseCoreDiagnosticsInterop (~> 1.0)

    • GoogleUtilities/Environment (~> 6.2)

    • GoogleUtilities/Logger (~> 6.2)

    • FirebaseCoreDiagnostics (1.1.0):

    • FirebaseCoreDiagnosticsInterop (~> 1.0)

    • GoogleDataTransportCCTSupport (~> 1.0)

    • GoogleUtilities/Environment (~> 6.2)

    • GoogleUtilities/Logger (~> 6.2)

    • FirebaseCoreDiagnosticsInterop (1.0.0)

    • FirebaseInstanceID (4.2.5):

    • FirebaseCore (~> 6.0)

    • GoogleUtilities/Environment (~> 6.0)

    • GoogleUtilities/UserDefaults (~> 6.0)

    • FirebasePerformance (3.1.4):

    • FirebaseCore (~> 6.2)

    • FirebaseInstanceID (~> 4.2)

    • FirebaseRemoteConfig (~> 4.4)

    • GoogleToolboxForMac/Logger (~> 2.1)

    • "GoogleToolboxForMac/NSData+zlib (~> 2.1)"

    • GoogleUtilities/Environment (~> 6.2)

    • GoogleUtilities/ISASwizzler (~> 6.2)

    • GoogleUtilities/MethodSwizzler (~> 6.2)

    • GTMSessionFetcher/Core (~> 1.1)

    • Protobuf (~> 3.9)

    • FirebaseRemoteConfig (4.4.1):

    • FirebaseABTesting (~> 3.1)

    • FirebaseAnalyticsInterop (~> 1.4)

    • FirebaseCore (~> 6.2)

    • FirebaseInstanceID (~> 4.2)

    • GoogleUtilities/Environment (~> 6.2)

    • "GoogleUtilities/NSData+zlib (~> 6.2)"

    • Protobuf (~> 3.9)

Any idea is the above-mentioned could be related to this issue?

Thanks in advance,
Leandro

Hello,

Since some days the firebase console display an alert message that saying it will be not possible to update manually the dSYMs after march. This is really a bad news when we have Bitcode enabled... Why did you remove this option ?
It will need us to download dSYMs manually and use local script, or add a cron in a CI to download and upload it from the script..

@jasonhu-g, any update on this ticket (Tracked internally at b/131423358) ?

I think you misunderstand @floriangbh, assuming I understand it correctly - I don't believe you will be able to upload them via the website. The instructions seem to tell you to use the script, which is I believe the same script that fastlane uses, which is what my stackoverflow answer and advice above should be using

Yes by "update manually" I meant via the Firebase console website :)
I'm now using the fastlane with the download_dsyms action, but in my opinion this is sometimes (if you are on another computer without Fastlane) more simple to let the possibility to do it from the web.
But I guess Firebase have a good reason to remove the manual upload from their website.

Closing out old issues / personal git cleaning...

Was this page helpful?
0 / 5 - 0 ratings