Why Crashlytics is asking for missing DSYM file every time?

22,085

Solution 1

TL;DR

Everytime you recompile your project after adding a line of code, the dSYM changes because the address of your lines of code in the resulting binary is not the same.

You can look at Fabric docs about uploading dsym to automatically upload your dSYM by adding a build phase or use the Fabric pod instead of just Crashlytics which apparently adds a build phase automatically like @ekscrypto said.

If you still want to do this manually, open your xcarchive where you can find your dSYMs and upload them to crashlytics

More details

dSYM is short for debug SYMbols. This helps crashlytics resolve the crash logs it receives and helps display detailed information about the crashes/bugs that can occur.

When you archive your app, you're left with *.xcarchive "file" which really is a folder that you can browse. Inside this xcarchive, you should have a dSYM folder where your dSYMs are.

To view it, first open organizer window in XCode (Window > Organizer or cmd+shift+6), right click on the last archive and click "Show in Finder". On the Finder window that opens, right click the last xcarchive for your app and click on show contents (sorry the picture is in french) browse xcarchive contents

This takes you inside your xcarchive where you can see the dSYMs for your app

dSYM for the app

Uploading this to crashlytics should solve your issue

Solution 2

We've recently encountered the same issue. Ended up with a bit customized version of an uploading script.

if [[ "${CONFIGURATION}" = "Release" ]] || [[ "${CONFIGURATION}" = "Adhoc" ]]; then
  echo "Uploading dSYMs.."
  find "${DWARF_DSYM_FOLDER_PATH}" -name "*.dSYM" | xargs -I \{\} "${PODS_ROOT}/FirebaseCrashlytics/upload-symbols" -gsp "${SRCROOT}/GoogleService-Info.plist" -p ios \{\}
else
  echo "Skip dSYMs upload"
fi

Note quoted paths and skipped dSYM uploads in a Debug configuration. Though it probably won't matter most of the time, as dSYMS are switched off in the Debug configuration anyway.

Also the purpose of find here is to help upload dynamic frameworks' dSYM files. E.g. OS third-party libraries, project frameworks, etc. Otherwise, they won't be symbolicated. Though still presented in stack traces.

Solution 3

in your Xcode project, under Build Phases add above run script:

"${PODS_ROOT}/Fabric/upload-symbols" -gsp "${PROJECT_DIR}/GoogleService-Info.plist" -p ios "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"

enter image description here

Solution 4

Simple Steps Follow 1 Go to archive and right click on the latest version in which you want to get crash report on firebase 2 see the dsyms folder 3 create the Zip file of dsyms folder 4 finally upload that zip file into the firebase console

Solution 5

This error means that some dSYM files are missing. The recommended approach is to constantly upload dSYM files to Crashlytics.

Now that Crashlytics is integrated in Firebase, the documentation has slightly changed: https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports-new-sdk

  1. Integrate Crashlytics : pod 'Firebase/Crashlytics'
  2. Add a Run Script Phase : find "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}" -name "*.dSYM" | xargs -I \{\} $PODS_ROOT/FirebaseCrashlytics/upload-symbols -gsp ${SRCROOT}/GoogleService-Info.plist -p ios \{\}

In case you don't want to upload dSYM files each time you debug build your app : https://support.crashlytics.com/knowledgebase/articles/118559-can-i-make-the-dsym-uploading-only-on-release-buil

Share:
22,085
Anup Gupta
Author by

Anup Gupta

Throughout my career, I have worked on a variety of applications, providing the best user experience. I have also developed applications using Swift, Objective-C, and Flutter. In addition to visiting new places, I like meeting different people and playing indoor and outdoor games. I'm always eager to learn and take on new challenges. Tea is always my preference over coffee.

Updated on July 05, 2022

Comments

  • Anup Gupta
    Anup Gupta almost 2 years

    I am using Crashlytics in my app everything working fine. even Crashlytics is also working good.

    But the problem is that whenever I am creating a new build for our app its again showing missing DSYM File upload new.

    Is there any solution for this?

    In fabric Document, I found this. but I did not understand this.

    can anyone explain to me how to resolve this issue?

    https://docs.fabric.io/apple/crashlytics/advanced-setup.html

    enter image description here