Ottenere report leggibili sugli arresti anomali nella dashboard di Crashlytics (piattaforme Apple)

Seleziona la piattaforma: iOS+ Android Flutter Unity


Per impostazione predefinita, Firebase Crashlytics elabora automaticamente i file di simboli di debug (dSYM) in modo da visualizzare report sugli arresti anomali deoffuscati e leggibili. In genere, questo comportamento viene configurato durante la configurazione iniziale di Crashlytics in your app, in particolare aggiungendo uno script di esecuzione che carica automaticamente i file dSYM durante la fase di build dell'app.

Purtroppo, in alcuni casi il caricamento automatico dei file dSYM potrebbe non riuscire. Questa guida fornisce alcuni modi per risolvere i problemi quando Crashlytics non riesce a trovare i file dSYM dell'app.

Assicurati che Xcode possa elaborare automaticamente i file dSYM e caricarli

Quando hai configurato Crashlytics nella tua app, hai configurato uno script di esecuzione per elaborare automaticamente i file dSYM e caricarli.

Assicurati che la configurazione dello script di esecuzione Crashlytics sia aggiornata ai nuovi requisiti introdotti con Xcode 15. Se la tua configurazione non è aggiornata, potresti ricevere il seguente errore:
error: Info.plist Error Unable to process Info.plist at path ....

In particolare, Xcode 15 e versioni successive richiedono di fornire un insieme più completo di percorsi dei file. Per il tuo script di esecuzione Crashlytics (firebase-ios-sdk/Crashlytics/run), assicurati di avere la seguente configurazione:

  1. Fai clic sulla scheda Fasi di build e poi espandi la sezione Esegui script.

  2. Nella sezione File di input, assicurati di avere i percorsi delle posizioni dei seguenti file:

    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}
    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}
    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist
    $(TARGET_BUILD_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/GoogleService-Info.plist
    $(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)
    Se nelle impostazioni di build del progetto hai ENABLE_USER_SCRIPT_SANDBOXING=YES e ENABLE_DEBUG_DYLIB=YES, includi quanto segue:
    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}.debug.dylib

Verifica se Xcode produce file dSYM

Molto spesso, i file dSYM non vengono trovati perché Xcode non li produce. Quando un caricamento non riesce, Crashlytics mostra un avviso "File dSYM mancante" in Firebase console. Se ricevi questo avviso, controlla innanzitutto che Xcode produca il file dSYM corretto per ogni build:

  1. Apri il progetto in Xcode e seleziona il file di progetto nel navigatore di Xcode.

  2. Seleziona la destinazione di build principale.

  3. Apri la scheda Impostazioni di build della destinazione e poi fai clic su Tutte.

  4. Cerca debug information format.

  5. Imposta Formato delle informazioni di debug su DWARF con file dSYM per tutti i tipi di build.

  6. Ricrea l'app.

I report sugli arresti anomali dovrebbero ora essere visualizzati nella Crashlytics dashboard. Se il problema persiste o riscontri altri errori, prova a individuare i file dSYM e a caricarli manualmente in Crashlytics.Crashlytics

Individua i file dSYM su una macchina locale

Esegui il seguente comando per visualizzare tutti gli UUID dei file dSYM sulla tua macchina e cercare il file dSYM mancante:

mdfind -name .dSYM | while read -r line; do dwarfdump -u "$line"; done

Una volta trovato il file dSYM, caricalo manualmente in Crashlytics. Se il comando mdfind non restituisce risultati, puoi cercare nella directory Products in cui si trova il file .app (per impostazione predefinita, la directory Products si trova in Derived Data). Se l'app è stata rilasciata in produzione, puoi anche cercare il file dSYM nella directory .xcarchive sul disco:

  1. In Xcode, apri la finestra Organizzatore e seleziona l'app dall'elenco. Xcode mostra un elenco di archivi per il tuo progetto.

  2. Fai clic tenendo premuto il tasto Ctrl su un archivio per visualizzarlo nel Finder. Fai di nuovo clic tenendo premuto il tasto Ctrl e poi fai clic su Mostra contenuto pacchetto.

  3. All'interno di .xcarchive è presente una directory dSYMs che contiene i file dSYM generati nell'ambito del processo di archiviazione di Xcode.

Carica i file dSYM

Crashlytics supporta diversi modi per caricare i file dSYM, automaticamente o manualmente.

(Consigliato) Elabora automaticamente i file dSYM e caricali

Quando hai configurato Crashlytics per la prima volta, molto probabilmente hai configurato questo comportamento di caricamento automatico per la tua app. Tuttavia, se i caricamenti automatici non riescono, controlla che la configurazione sia corretta.

Carica manualmente i file dSYM

Se i caricamenti automatici non riescono, puoi caricare manualmente i file dSYM utilizzando una delle seguenti opzioni.

  • Opzione 1: utilizza l'opzione "Trascina e rilascia" basata sulla console per caricare un file zip contenente i file dSYM (vai alla Firebase console > Crashlytics > dSYM tab).

  • Opzione 2: utilizza lo script upload-symbols che puoi chiamare da qualsiasi punto del processo di compilazione per caricare manualmente i file dSYM. Per eseguire lo script upload-symbols, utilizza una delle seguenti opzioni:

    • Opzione A: includi la seguente riga nel processo di compilazione:

      find dSYM_DIRECTORY -name "*.dSYM" | xargs -I \{\} $PODS_ROOT/FirebaseCrashlytics/upload-symbols -gsp /PATH/TO/GoogleService-Info.plist -p PLATFORM \{\}
    • Opzione B: esegui lo script direttamente nel tuo terminale:

      /PATH/TO/PODS/DIRECTORY/FirebaseCrashlytics/upload-symbols -gsp /PATH/TO/GoogleService-Info.plist -p ios /PATH/TO/dSYMs

    Per le note sull'utilizzo e le istruzioni aggiuntive relative a questo script, esegui upload-symbols con il parametro --help.