Firebase Crashlytics: Upload missing dSYMs to see crashes from 1 versions.(iOS)

IosFirebaseCrashlyticsDeobfuscation

Ios Problem Overview


Error Message: Upload missing dSYMs to see crashes from 1 versions. Versions affected: 1.0 (1)

I am trying to implement Firebase Crashlytics in my iOS project. I did all the setups according to Firebase Crashlytics Doucmentation. The crash is performed manually when the button is clicked just to see whether the crashlytics is working.

@IBAction func onTestCrashButtonClick(_ sender: UIButton) {
    
    Crashlytics.sharedInstance().crash()

}

But when i tried to see the error report in the firebase console, it shows something like this image.

enter image description here

After reading Get Deobfuscated crash reports I just Set Debug Information Format to DWARF with dSYM File like below but the problem not fixed till now. enter image description here

Ios Solutions


Solution 1 - Ios

Only and simple way to upload DSYMS files to Firebase Crashlytics. (April - 2021)

  1. Download appDsyms archive from App Store

    1.1 Login: https://appstoreconnect.apple.com

    1.2 Go to: MyApps -> Choose your app -> Test Flight -> Select app version that is in the App Store -> Build Metadata -> Includes Symbols (right side) -> Press: Download dSYM.

  2. Open terminal, drag and drop 3 files on terminal on this order:

    2.1 drag an drop: "upload-symbols" which can be found in /project/Pods/FirebaseCrashlytics/upload-symbols

    2.2 write " -gsp "

    2.3 drag an drop: "GoogleService-Info.plist" which can be found in /project/GoogleService-Info.plist

    2.4 write " -p ios "

    2.5 drag an drop: "appDsyms" folder (unarchived, zip file might not work!) which usually is in Download folder /Users/username/Downloads/appDsyms

    2.6 Press Enter

In terminal the complete command should include -gsp and -p ios, full command looks like this: 2.1 -gsp 2.3 -p ios 2.5

/project/Pods/FirebaseCrashlytics/upload-symbols -gsp /project/GoogleService-Info.plist -p ios /Users/username/Downloads/appDsyms

All Set, wait for upload in the terminal!

Terminal example: enter image description here

One way how to get a file or folder location with a drag and drop to terminal:

enter image description here

AppStore Connect, Download dSYM:

enter image description here

Solution 2 - Ios

I have been having this same issue for a while and I was finally able to resolve it, thought I would share what worked for me:

For context, I am working on a larger app which uses several Cocoapods.

I found that same red banner on my Firebase Crashlytics page and after following all of their instructions I was still seeing it.

I tried the "archive/find .dSYMs/upload manually via terminal" solution several times to no avail.

Finally, I decided to download the .dSYMs from iTunesConnect.
[Your App] > Activity > [Desired Build Number] > Download dSYM

I then uploaded those .dSYMs manually and within minutes Firebase Crashlytics was happy and showing the crash reports.

UPDATE
Google has added a swanky .dSYM upload feature on the Firebase Crashlytics dashboard, no more uploading from the terminal.

Edit on March 16, 2020.

Google is soon removing the upload feature on the Firebase Dashboard. An uploader script should be used from the terminal to upload dSYMs to Firebase. See Google's instructions here.

Solution 3 - Ios

After updating Fabric Crashlytics to Firebase Crashlytics SDK. I was also getting same issue(Upload 1 missing dSYM required to process 5 crashes). I solved with the help of following steps-:

Step 1-: Open Target-> Build Settings -> Search for "debug information format". Set Debug Information Format to DWARF with dSYM File for all your build types.

enter image description here Step 2-: Open Run Script section and input the script

"${PODS_ROOT}/FirebaseCrashlytics/run"

and then add input files-

${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}
$(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)

enter image description here

Step 3-: Add one more script to upload dSYM file

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

enter image description here

Solution 4 - Ios

If everything is fine you setup all without missing any step and then also you see Upload missing dSYMs to see crashes error in firebase.

(June 1 - 2020)

enter image description here

> Download the .dSYMs from iTunesConnect only no anywhere else and upload those to the Firebase.

enter image description here

Google is soon removing the upload feature on the Firebase Dashboard > Run the script directly from your terminal to upload dSYMs :

/path/to/pods/directory/FirebaseCrashlytics/upload-symbols -gsp /path/to/GoogleService-Info.plist -p ios /path/to/dSYMs

After two days of long research and try lots of solutions but no anyone works for me :(

But by this solution Firebase Crashlytics was happy and showing the crash reports within a few minutes.

Solution 5 - Ios

Pods/Fabric/upload-symbols -gsp APP/Resources/GoogleService_Info.plist -p ios /Users/ME/Desktop/APP.app.dSYM

This one I used recently to upload my dsym to fabric. I was using fabric with crashlytics SDK not firebase one(which is currently in beta). Just replace your app name for 'APP' and your DSYM path instead of '/Users/ME/Desktop/APP.app.dSYM.

Solution 6 - Ios

In my case, I have done the following things and it worked:

  1. Select 'Run script only when installing' in Build Phases -> Run Script (Shell = ${PODS_ROOT}/Fabric/run)

  2. Build the app

  3. Now you can find the .dsym file in the path, /Library/Developer/Xcode/DerivedData/XXX-arctjcalvfslmbakanpyivuuxjmm/Build/Products/Release-iphoneos

  4. Upload the zipped .dsym file to firebase console

  5. After few minutes, you can find the crash reports

NOTE:

  • I have disabled bitcode while exporting ipa file (Adhoc or Appstore)
  • If you need ipa with bitcode enabled, then download dsym file from iTunes connect

Solution 7 - Ios

Find and upload debug symbols for Crashlytics

  • Copy the UUID of your missing dSYM and run mdfind "com_apple_xcode_dsym_uuids == <UUID>" on a terminal window.
  • The above command will return something like .../build/ios/Release-Staging-iphoneos/your.app.dSYM
  • Zip up the package and upload to Crashlytics using Firebase dashboard

Wait for 10-15 minutes before the crashes start to appear on the console.

Solution 8 - Ios

March 2021

The activity tab is no longer on itunesconnect so for you to get the Dsyms file you will have to

  1. Go to itunes connect.
  2. My Apps.
  3. Select the specific app.
  4. Navigate to testflight.
  5. select the build you want to generate the Dsyms file for.
  6. Click build meta data.
  7. search for "includes symbols" and then click then click the download.

Then after downloading it run this code in your terminal replacing the quoted parts with the right file path.

/path/to/pods/directory/FirebaseCrashlytics/upload-symbols
 -gsp /path/to/GoogleService-Info.plist -p ios /path/to/dSYMs

Solution 9 - Ios

I also faced the same issue. Basically I was missing a simple step that is why Firebase script could not upload dSYM file.

Step followed to solve it.

  • Click on project file
  • Select target
  • Go to build settings
  • Search "debug information format"
  • For all scheme change the settings to "DWARF with dYSM file"

xCode setting screen

  • Now run the project again
  • dYSM error of firebase dashboard should go...

Solution 10 - Ios

If you are using the dynamic library is your project using cocoa pods or any other tool then Firebase needs Duplicate Symbol files to locate the faulty code in your library. If you want to read more about dSysms read this : https://stackoverflow.com/questions/3656391/whats-the-dsym-and-how-to-use-it-ios-sdk

To find dsysm folder, you first need the .ipa file on which crash was reported on your firebase. In your case, I suppose you are running on the simulator for testing. To get IPA follow these steps: https://stackoverflow.com/questions/26928721/how-to-create-ipa-in-xcode-6-without-apple-developer-account

When you reach .iPA then right click and select show package contents, or follow this link: https://stackoverflow.com/questions/7088771/iphone-where-the-dsym-file-is-located-in-crash-report

There you will find system folder. Upload this folder to firebase crashalytics.

Hope this helps!

Solution 11 - Ios

I hope you have a resolved it till now. But for other who are using Firebase/Crashlytics. I uploaded the build and got crash but it was not showing in the console due to missing dsyms.

I logged into the itunes and goto the activity section. Then download the dsyms.enter image description here

After that I uploaded the dsyms to firebase console using below command:

/Users/ankitjaiswal/Code/oliobox-ios/Pods/FirebaseCrashlytics/upload-symbols
-gsp /Users/ankitjaiswal/Code/oliobox-ios/JacksonArtGallery/GoogleService-Info.plist
-p ios /Users/ankitjaiswal/Downloads/appDsyms.zip

But in this way you always manually need to download and upload it. This is not recommended instead you can follow this link: https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports-new-sdk

Solution 12 - Ios

I have created Medium Story about dSYMs upload.

Stap by step how to upload with the terminal

Medium Link: https://medium.com/@petarlemajic/firebase-dsyms-upload-1cf432c475f7 I will be happy if this helps somebody. Cheers!

Solution 13 - Ios

After download dsym .zip file. You should run code below in Terminal.

/ProjectPath/Pods/Crashlytics/Crashlytics.framework/upload-symbols -gsp /ProjectPathForGoogleServiceFile/GoogleService-Info.plist -p ios /dSYMFilePath/dSYMs.zip

If upload-symbols command not found, you should update pods for Firebase.

Solution 14 - Ios

Question is answered well already if you still want a ready-made script that you can copy and paste. Here you go.

    find
 
$HOME/Library/Developer/Xcode
/DerivedData/<target-name>-*/Build/Products/Develop-iphoneos
 
-name "*.dSYM" | xargs -I \{\}
 
$PODS_ROOT/FirebaseCrashlytics/upload-symbols
 
-gsp ${PROJECT_DIR}/<target-name>/GoogleService-Info.plist
 
-p ios \{\}

Solution 15 - Ios

(October 21 - 2020)

I was having a lot of trouble uploading my dsyms to firebase, this happend to me after i updated to FirebaseCrashlytics and removed my fabric SDK, before that i had no issues. I tried all solutions with no luck but finally figured out my problem after making a few changes in my code. It seems i had some conflicting values in my info.plist file and were not lining up with what was in my GoogleService-Info.plist file. The bundle ID in the GoogleService-Info.plist should be the same used as the url schemes within info.plist. After i made these changes i uploaded the DSYMs manually.

This is an example of how my bundle ids look in my project after updating:

GoogleService-Info.plist enter image description here

info.plist enter image description here

I then wanted this automated. I added the following script to the Build Phases > Run Script and i now have this automated as it was before when i was using the Fabric sdk. Just copy this code into run script, it should require no changes.

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

enter image description here

PS: Make sure you follow the other posts making sure you have "DWARF with dYSM file" set in build options as well.

Solution 16 - Ios

According to firebase documents, instead of uploading dsym You can also provide your app's built Info.plist location to the build phase's Input Files field:

$(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)

They fixed bug and document updated

Solution 17 - Ios

If Bitcode enable = Yes

  1. Go to App Store Connect
  2. Go to iOS Build and Download dSYM
  3. Open a terminal
  4. Run the command

/Users/your-project-path/ios/Pods/FirebaseCrashlytics/upload-symbols -gsp /Users/your-project-path/ios/GoogleService-Info.plist -p ios /Users/your-username/Downloads/appDsyms

  1. Once you get the success message and refresh the Firebase console within some time you will see the reflections

Note: Upload all the built dSYM files to the Firebase

Solution 18 - Ios

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 19 - Ios

The accepted answer is perfect and what I also followed. I would just like to add another way to download these dSyms.

Open Organizer from Xcode menu > Window > Organizer

Select the Application from left panel and select Archives tab.

Select the archive for the app release you want to download dSyms of. (If you have deleted archives, then you better follow the accepted answer)

On the right panel, click Download Debug Symbols. Now this will download those symbols into the archive itself. Simply right click the archive version > Show in Finder.

Here in finder, right-click archive > Show package contents.

This will open the contents to reveal the dSyms.

Now you don't need all of them, some of them will be your added frameworks/libs from pods and other imports.

Select only the ones with alphanumeric labels.

enter image description here

You can zip these and upload to Firebase.

Solution 20 - Ios

  1. Go to developer.apple.com > Activity > iOS Build > Select Version > Download dSYM

  2. Change your-project-path and your-username

  3. Run this code on Terminal

    /Users/your-project-path/ios/Pods/FirebaseCrashlytics/upload-symbols -gsp /Users/your-project-path/ios/GoogleService-Info.plist -p ios /Users/your-username/Downloads/appDsyms.zip

  4. You'll see success message on the Terminal.

  5. Check the crash logs on Firebase Console after 15-30 minutes.

download symbold

Solution 21 - Ios

The top solutions are good, thanks to their authors. Maybe this tips could help someone : when you want to test your configuration by crashing your app, build it with Xcode on the simulator, then stop the app and relaunch it directly in the simulator. As the firebase doc says : The initial instance includes a debugger that interferes with Crashlytics. https://firebase.google.com/docs/crashlytics/test-implementation?platform=ios#test_it_out

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionjazzbpnView Question on Stackoverflow
Solution 1 - IosEgzon P.View Answer on Stackoverflow
Solution 2 - IosjnelsonView Answer on Stackoverflow
Solution 3 - IosDipakView Answer on Stackoverflow
Solution 4 - IosNikunj KumbhaniView Answer on Stackoverflow
Solution 5 - IosraNaView Answer on Stackoverflow
Solution 6 - IosvinayView Answer on Stackoverflow
Solution 7 - IosnilobarpView Answer on Stackoverflow
Solution 8 - Iosbabatunde adewoleView Answer on Stackoverflow
Solution 9 - IosShahedView Answer on Stackoverflow
Solution 10 - IosPallavi SrikhakolluView Answer on Stackoverflow
Solution 11 - IosankitjaiswalView Answer on Stackoverflow
Solution 12 - IostBugView Answer on Stackoverflow
Solution 13 - IosBadCodeView Answer on Stackoverflow
Solution 14 - IosDeepukjayanView Answer on Stackoverflow
Solution 15 - IosNigel BrownView Answer on Stackoverflow
Solution 16 - IosHamedView Answer on Stackoverflow
Solution 17 - IosLucky MehndirattaView Answer on Stackoverflow
Solution 18 - IosLucky MehndirattaView Answer on Stackoverflow
Solution 19 - IosPrasadWView Answer on Stackoverflow
Solution 20 - IosfatihyildizhanView Answer on Stackoverflow
Solution 21 - IosFilouxView Answer on Stackoverflow