Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why Crashlytics is asking for missing DSYM file every time?

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

like image 974
Anup Gupta Avatar asked Jul 20 '18 10:07

Anup Gupta


People also ask

What is the use of dSYM file for Crashlytics?

By default, Firebase Crashlytics automatically processes your debug symbol (dSYM) files to give you deobfuscated and human-readable crash reports. This behavior is set when you add a run script that initializes Crashlytics to your app's build phase.

What is dSYM file?

A dSYM file is an ELF file that contains DWARF (debugging with attributed record formats) debug information for your application. DWARF is a debugging file format that supports source-level debugging.

Where is dSYM file stored?

Your app's dSYM files are stored in Xcode's dSYM archive path folder. This is the folder where the iOS agent gets the dSYM files that are used to symbolicate your crash reports.


2 Answers

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.

like image 194
elfenlaid Avatar answered Sep 30 '22 18:09

elfenlaid


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

like image 40
user3476114 Avatar answered Sep 30 '22 19:09

user3476114