Firebase Crashlytics DSYM file - ios

I'm trying to integrate Crashlytics in my app and in the 5. step it says:
Xcode versions 10 or higher only: Add your app’s dSYM location as an input file that enables Crashlytics to automatically generate dSYMs for large apps more quickly. For example:
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}
I copy/pasted this path to my Input Files and also this one $(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)
Debug Info is set to DWARF with dSYM file.
Should ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME} be like this or this is a dynamic path and I need to replace it with my current DSYM file path?

Using that path should work, but if you run into issues you can manually specify the path as well, or follow these instructions if it's still not working https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports-new-sdk?authuser=0&platform=ios#upload-dsyms.

Related

How to find Firebase Crashlytics initialization file paths and double check that they work?

I am following the instructions for enabling Firebase crashlytics on on iOS. There are a lot of file paths that I am not sure how to correctly resolve. The tutorial also says check Device Logs for checking if the script correctly uploaded dSYM files, but I can't see anything pertaining to this script in my device logs. Any advice?
Do I leave these paths as is for a default build or should I always be customizing them?
1. Script Path
Who sets this ${PODS_ROOT}? How can I print it to make sure it's correct?
"${PODS_ROOT}/FirebaseCrashlytics/run"
2. dSYM Path
Same question as above, but for ${DWARF_DSYM_FOLDER_PATH}.
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}
3. Info.plist Path
$(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)
4. How to check for correctness?
Am I correct in reading that this should show up in device logs?
Your device logs display the Firebase verification that initialization is complete.
Those default paths are correct, and do not need to be modified per release. They will always target the correct dSYM and root folder if you leave them as is. You can customize them to follow a specific upload path following these instructions, if you prefer.
In regards to initialization, yes in your device log, the Firebase SDK will indicate when it has been initialized. You can expect to see something like this "FirebaseCrashlytics: Initializing Crashlytics 17.2.2"

Firebase crashlytics upload dsym automatically

I'm using React Native Firebase. At firebase crashlytics I have missing DSYM's.
What's the right way to add dSYMs automatically on every build? I guess it should be added to run script? If so, how can I get the path to /path/to/pods/directory/FirebaseCrashlytics/upload-symbols and /path/to/dSYMs.
Thanks!
This question has been answered in previous posts, but I'll provide a quick summary. The paths below will automatically find your dSYMs and upload them.
Here is what goes into your runscript:
"${PODS_ROOT}/FirebaseCrashlytics/run"
This is what goes into your input file:
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}
You can use this terminal command to find the correct paths to your dSYMs:
mdfind "com_apple_xcode_dsym_uuids == UUID"
You can use the below post as a reference:
Firebase Crashlytics DSYM file.

It looks like we are missing dSYMs to process crashes for the versions

I have enabled the project settings of the project and target and set Debug Information Format for both Debug and Release to DWARF with dSYM File.
I have enabled the Bitcode to NO.
But I am getting the error "we are missing dSYMs to process crashes for the versions below".
I have followed the below steps to generate dSYMs file.
1. Go to the Window Menu -> Organizer in Xcode.
2. Select the right version of build and click on the button "Download Debug Symbols" on the right panel
3. Right Click on right version of build and select show in Finder.
4. Select an .xcarchieve file then right click on that and click on Show Package contents
5. Then Go to *dSYMs folder* and select .dSYM file and compress that file.
6. Now Final Step is to upload compressed file on fabric.
My question is when i add the new DSYM file into the fabric, will it remove the existing crashes logs??
Yes, #Arun because every time you recompile your project after adding a line of code, the dSYM changes because the address of your lines of the code in resulting binary is not the same that's the reason remove the existing crashes logs. You can look below link https://docs.fabric.io/apple/crashlytics/missing-dsyms.html#upload-symbols-script
#Arun, Make sure you are uploading the correct dSYM (UUID of missing dSYM matches with uploading dSYM). If fabric do not process these dSYM then reach out to us at support#fabric.io and we can look into this further.

Why do I need to add my app's built Info.plist location to install Crashlytics in Xcode 10

Crashlytics installation process say:
Xcode 10 only: Add your app's built Info.plist location to the Build Phase's Input Files field: $(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)
But it doesn't explain why this is needed. Does anyone know how this effects Crashlytics? I understand it's for passing in files, but it doesn't seem Fabric/run reads the file.

DSYM and binary required to symbolicate? Or just DSYM?

Started using Crashlytics and am curious why only the DSYMs have to be uploaded and not the full .app binary to match. I was under the impression that to symbolicate you needed a binary with matching DSYM file. Is that not the case? Basically trying to figure out the magic of how Crashlytics symbolicates when all I do in my app is run the post-build script that uploads the DSYM
Mike from Fabric and Crashlytics here.
A dSYM file actually contains all the debug symbols of your app needed to symbolicate the crash report. This is why we recommend having your Debug_Information_Format set to "Dwarf with dSYM". We also generate a unique build id so that even if the build and version number don't change, the dSYM uploaded for that build remains accurate for any crash reports that need to be symbolicated.
You can also read more information on this from Apple, but the most important part is this: "As the compiler translates your source code into machine code, it also generates debug symbols which map each machine instruction in the compiled binary back to the line of source code from which it originated. Depending on the Debug Information Format (DEBUG_INFORMATION_FORMAT) build setting, these debug symbols are stored inside the binary or in a companion Debug Symbol (dSYM) file."
As noted above, the symbols can be in just the dSYM file, hence our recommendation for the setting of Debug_Information_Format.

Resources