cohenadair
cohenadair

Reputation: 2072

Firebase Crash Reporting - Not all symbol files uploaded

I've set up Firebase Crash Reporting, including the run script as per the Firebase documentation, but there's a big issue: not all symbol files are uploaded when I build a new archive.

After I build a new archive, two UUID's symbol files were uploaded to the Firebase Console; however, there are dozens of UUID's for the archive I built (I know this from downloading the dSYMs from iTunes Connect).

Now, I've had a few crash reports come in, none of which are symbolicated. I can manually upload the dSYM files for each missing UUID using Firebase's batch-upload script, but that only allows future stack traces to be symbolicated. Any existing crashes are virtually useless to me.

There isn't much Firebase documentation about how the symbol files are uploaded, but from what I gather, all symbols should be uploaded for each new build, including archive builds.

So I guess my questions are:

  1. Am I missing a setup step?
  2. If this is expected behaviour, what is going on? Why are only some files uploaded?
  3. Does the run script output a log? Maybe I can view it and see if there were any errors.

Here is my run script:

if [ "$CONFIGURATION" == "Release" ]; then
    GOOGLE_APP_ID=<app-id>
    "${PODS_ROOT}"/FirebaseCrash/upload-sym "${SRCROOT}"/<app>/Firebase/CrashReportingKey.json
fi

Thanks!

Upvotes: 4

Views: 3118

Answers (3)

Arbitur
Arbitur

Reputation: 39081

I wrote a Python 2.7 script to upload my dSYM's

I created this file structure in Projects source directory

Scripts/
    |upload_syms.py
    |syms/
        |myVersion/
            |FE98728-928748923B78-ASDASDF...

upload_syms.py

from sys import argv
from os import listdir, system

version = argv[1]
symPath = 'syms/' + version

command = './../Pods/FirebaseCrash/batch-upload '
command += '-i ../App/Info.plist '
command += '-p ../App/GoogleService-Info.plist '
command += '../App/ServiceAccount.json '
command += symPath + '/'

symFiles = [f for f in listdir(symPath) if f != '.DS_Store']

for sym in symFiles:
    print 'Upload ' + sym + '...'
    system(command + sym)
    print

print 'Uploaded ' + str(len(symFiles)) + ' dSYM files'

Used by running in Terminal

python upload_syms.py myVersion

Upvotes: 0

lePapa
lePapa

Reputation: 377

if bitcode is enabled in your project settings

Follow these steps carefully

  1. Add your unzipped dsym folder to your project's main directory
  2. Add this script to the dsym folder
  3. Open terminal
  4. cd into the dsym folder in the project's main directory
  5. Run this python script i.e 'python batch_upload_files.py'

https://github.com/hanijazzar/Contributions/blob/master/batch_upload_files.py

Upvotes: 1

Doug Stevenson
Doug Stevenson

Reputation: 317392

It sounds like you're using bitcode? There's special instructions for that.

https://firebase.google.com/docs/crash/ios#bitcode_support

Upvotes: 4

Related Questions