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 nell'app, in particolare aggiungendo uno script di esecuzione che carica automaticamente i file dSYM durante la fase di build dell'app.
Purtroppo, esistono alcuni casi che potrebbero causare il mancato caricamento automatico dei file dSYM. Questa guida fornisce alcuni modi per risolvere i problemi quando Crashlytics non riesce a trovare i file dSYM della tua 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 in base ai nuovi requisiti introdotti con Xcode 15. Se la tua
configurazione non è aggiornata, potresti visualizzare 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 posizioni dei file. Per lo script di esecuzione di Crashlytics
(firebase-ios-sdk/Crashlytics/run
), assicurati di avere la seguente
configurazione:
Fai clic sulla scheda Fasi di build ed espandi la sezione Esegui script.
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
Se hai$(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)
ENABLE_USER_SCRIPT_SANDBOXING=YES
eENABLE_DEBUG_DYLIB=YES
nelle impostazioni di build del progetto, includi quanto segue:${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}.debug.dylib
Controllare se Xcode produce dSYM
Molto spesso, i file dSYM scompaiono perché Xcode semplicemente non li produce. Quando un caricamento non va a buon fine, Crashlytics mostra un avviso "dSYM mancante" nella console Firebase. Se ricevi questo avviso, verifica innanzitutto che Xcode produca il dSYM corretto per ogni build:
Apri il progetto in Xcode, quindi seleziona il file di progetto nel navigatore di Xcode.
Seleziona la build di destinazione principale.
Apri la scheda Impostazioni di build della destinazione, quindi fai clic su Tutte.
Cerca
debug information format
.Imposta Formato informazioni di debug su DWARF con file dSYM per tutti i tipi di build.
Ricrea l'app.
I report sugli arresti anomali dovrebbero ora essere visualizzati nella dashboard Crashlytics. Se il problema persiste o riscontri altri errori, prova a individuare i file dSYM e a caricarli manualmente su Crashlytics.
Individuare i file dSYM su una macchina locale
Esegui questo comando per visualizzare tutti gli UUID dei tuoi dSYM sulla macchina e cercare il dSYM mancante:
mdfind -name .dSYM | while read -r line; do dwarfdump -u "$line"; done
Una volta trovato il file dSYM, caricalo manualmente su Crashlytics.
Se il comando mdfind
non restituisce risultati, puoi cercare nella directory Products
in cui si trova .app
(per impostazione predefinita, la directory Products
si trova in Derived Data
). Se la tua app viene rilasciata in produzione, puoi anche cercare il relativo dSYM nella directory .xcarchive
sul disco:
In Xcode, apri la finestra Organizer e seleziona la tua app dall'elenco. Xcode mostra un elenco di archivi per il tuo progetto.
Fai clic tenendo premuto il tasto Control su un archivio per visualizzarlo in Finder. Fai di nuovo clic tenendo premuto il tasto Control e poi fai clic su Mostra contenuto pacchetto.
All'interno di
.xcarchive
si trova una directory dSYMs che contiene i dSYM generati nell'ambito della procedura di archiviazione di Xcode.
Caricare i file dSYM
Crashlytics supporta diversi modi per caricare i file dSYM, in modo automatico o manuale.
(Consigliato) Elabora automaticamente i file dSYM e caricali
Quando hai configurato inizialmente Crashlytics, probabilmente hai configurato questo comportamento di caricamento automatico per la tua app. Tuttavia, se i caricamenti automatici non vanno a buon fine, verifica che la configurazione sia corretta.
Caricare manualmente i file dSYM
Se i caricamenti automatici non vanno a buon fine, puoi caricare manualmente i file dSYM utilizzando una delle seguenti opzioni.
Opzione 1: utilizza l'opzione "Trascina e rilascia" basata su console per caricare un file zip contenente i file dSYM (vai alla console Firebase > Crashlytics > scheda dSYM).
Opzione 2: utilizza lo script
upload-symbols
che puoi chiamare da qualsiasi punto della procedura di compilazione per caricare manualmente i file dSYM. Per eseguire lo scriptupload-symbols
, utilizza una delle seguenti opzioni:Opzione A: includi la seguente riga nel processo di build:
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 dal terminale:
/PATH/TO/PODS/DIRECTORY/FirebaseCrashlytics/upload-symbols -gsp /PATH/TO/GoogleService-Info.plist -p ios /PATH/TO/dSYMs
Per note sull'utilizzo e istruzioni aggiuntive su questo script, esegui
upload-symbols
con il parametro--help
.