Why Crashlytics is asking for missing DSYM file every time?

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.


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


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