Ricevi report leggibili sugli arresti anomali nella dashboard di Crashlytics


Per impostazione predefinita, Firebase Crashlytics esegue automaticamente l'instrumentazione del progetto Flutter per caricare i file di simboli necessari che assicurano che i report sugli arresti anomali siano deoffuscati e leggibili.

Purtroppo, in alcuni casi il progetto potrebbe non essere completamente configurato. Questa guida illustra il funzionamento dell'automazione e fornisce i primi passaggi per eseguire il debug della configurazione del progetto.

Piattaforme Apple

Controlla la configurazione per il caricamento dei file dSYM

L'aggiunta del plug-in Flutter e l'esecuzione del comando flutterfire configure tenteranno di aggiungere uno script di esecuzione all'area di lavoro Xcode del progetto che trova e carica i file di simboli dSYM necessari su Crashlytics.Crashlytics Senza questi file, nella dashboard di Crashlytics viene visualizzato un avviso "File dSYM mancante" e le eccezioni verranno trattenute dal backend fino al caricamento dei file mancanti.

Se si verifica questo problema, assicurati innanzitutto di aver installato lo script di esecuzione:

  1. Individua e apri il file dell'area di lavoro Xcode nella directory iOS del progetto (FLUTTER_PROJECT_NAME/ios/Runner.xcworkspace).

  2. Identifica se uno script di esecuzione denominato [firebase_crashlytics] Crashlytics Upload Symbols è stato aggiunto alle fasi di compilazione del target Runner.

    Consulta la sezione applicabile di seguito per sapere se lo script di esecuzione non esiste o se lo script di esecuzione esiste.

Se questo script di esecuzione non esiste, puoi aggiungerlo manualmente:

  1. Individua l'ID app Firebase per la tua app per Apple. Ecco due diversi punti dove puoi trovare questo ID:

    • Nella console Firebase, vai a > Impostazioni progetto. Scorri verso il basso fino alla scheda Le tue app, poi fai clic sulla tua app Firebase per Apple per visualizzare le informazioni dell'app, incluso l'ID app.

    • Nella directory di primo livello del progetto Flutter, individua il file firebase_options.dart. L'ID app Firebase per la tua app Apple è contrassegnato come GOOGLE_APP_ID.

  2. Fai clic su > Nuova fase di esecuzione dello script.

    Assicurati che questa nuova fase Esegui script sia l'ultima fase di compilazione del progetto. In caso contrario, Crashlytics non può elaborare correttamente i file dSYM.

  3. Espandi la nuova sezione Esegui script.

  4. Nel campo dello script (sotto l'etichetta Shell), aggiungi i seguenti script di esecuzione.

    Questi script elaborano i file dSYM e li caricano su Crashlytics.

    $PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase --validate -ai FIREBASE_APP_ID -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM
    $PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase -ai FIREBASE_APP_ID -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM 
    • FIREBASE_APP_ID: il tuo ID app Firebase per Apple (non il tuo ID bundle Apple)
      Esempio di ID app Firebase per Apple: 1:1234567890:ios:321abc456def7890

    Ecco due modi per trovare l'ID app Firebase:

    • Nel file GoogleService-Info.plist, l'ID app è il valore GOOGLE_APP_ID.

    • Nella console Firebase, vai alle Impostazioni del progetto. Scorri verso il basso fino alla scheda Le tue app, quindi fai clic sull'app Firebase che ti interessa per trovare il relativo ID app.

  5. Nella sezione File di input, aggiungi 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)

    Xcode cerca questi file di input nelle posizioni specificate per assicurarsi che i file di compilazione siano disponibili per lo script di esecuzione. Inoltre, se è attivata la sandboxing degli script utente, Xcode consente allo script di esecuzione di accedere solo ai file specificati in File di input.

    • Fornendo la posizione dei file dSYM del progetto, consente Crashlytics di elaborare i file dSYM.
    • Fornendo la posizione del file compilato GoogleService-Info.plist dell'app, Crashlytics può associare i file dSYM alla tua app Firebase.
    • Fornendo la posizione del file eseguibile dell'app, lo script di esecuzione consente di evitare caricamenti duplicati dello stesso file dSYM. Tieni presente che i file binari dell'app non vengono caricati.

Se lo script di esecuzione esiste, consulta la guida specifica per Apple per la risoluzione dei problemi relativi ai file dSYM. Se scegli di caricare i file dSYM tramite la procedura descritta, dovrai svolgere i seguenti passaggi aggiuntivi:

  1. Individua l'ID app Firebase per la tua app per Apple. Ecco due diversi punti dove puoi trovare questo ID:

    • Nella console Firebase, vai a > Impostazioni progetto. Scorri verso il basso fino alla scheda Le tue app, poi fai clic sulla tua app Firebase per Apple per visualizzare le informazioni dell'app, incluso l'ID app.

    • Nella directory di primo livello del progetto Flutter, individua il file firebase_options.dart. L'ID app Firebase per la tua app Apple è contrassegnato come GOOGLE_APP_ID.

  2. Quando esegui lo script upload-symbols, utilizza -ai FIREBASE_APPLE_APP_ID anziché -gsp /path/to/GoogleService-Info.plist.

Controlla la configurazione della versione per Flutter e Crashlytics (se utilizzi il flag --split-debug-info)

Se il progetto Flutter utilizza il flag --split-debug-info (e, facoltativamente, anche il flag --obfuscate), sono necessari passaggi aggiuntivi per mostrare tracce dello stack leggibili per l'app.

Assicurati che il progetto utilizzi la configurazione della versione consigliata (Flutter 3.12.0 e plug-in Crashlytics Flutter 3.3.4 e versioni successive) in modo che il progetto possa generare e caricare automaticamente i simboli Flutter (file dSYM) su Crashlytics.

Android

Controlla la configurazione delle dipendenze

Il comando flutterfire configure tenta di aggiungere le dipendenze necessarie ai file di compilazione Gradle del progetto. Senza queste dipendenze, i report sugli arresti anomali nella console Firebase potrebbero essere offuscati se l'offuscamento è attivo.

Assicurati che le seguenti righe siano presenti nel file build.gradle a livello di progetto e nel file build.gradle a livello di app:

  • Nel file di build a livello di progetto (android/build.gradle), controlla la seguente riga:

    dependencies {
    // ... other dependencies
    
    classpath 'com.google.gms:google-services:4.3.5'
    classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1'
    }
  • Nel file di build a livello di app (android/app/build.gradle), controlla la riga seguente:

    // ... other imports
    
    android {
    // ... your android config
    }
    
    dependencies {
    // ... your dependencies
    }
    
    // This section must appear at the bottom of the file
    apply plugin: 'com.google.gms.google-services'
    apply plugin: 'com.google.firebase.crashlytics'

Verifica di utilizzare l'interfaccia a riga di comando per caricare i simboli Flutter (se utilizzi il flag --split-debug-info)

Se il progetto Flutter utilizza il flag --split-debug-info (e, facoltativamente, anche il flag --obfuscate), sono necessari passaggi aggiuntivi per mostrare tracce dello stack leggibili per l'app.

Utilizza l'interfaccia a riga di comando Firebase (v.11.9.0 e versioni successive) per caricare i simboli di debug Flutter. Devi caricare i simboli di debug prima di segnalare un arresto anomalo da una compilazione del codice offuscato.

Dalla directory principale del progetto Flutter, esegui il seguente comando:

firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
  • FIREBASE_APP_ID: il tuo ID app Firebase per Android (non il nome del pacchetto)
    Esempio di ID app Firebase per Android: 1:567383003300:android:17104a2ced0c9b9b

    Ecco due modi per trovare l'ID app Firebase:

    • Nel file google-services.json, l'ID app è il valore mobilesdk_app_id.

    • Nella console Firebase, vai alle Impostazioni del progetto. Scorri verso il basso fino alla scheda Le tue app, quindi fai clic sull'app Firebase che ti interessa per trovare il relativo ID app.

  • PATH/TO/symbols: la stessa directory che viene passata al flag --split-debug-info durante la compilazione dell'applicazione

Se i problemi persistono, consulta la guida specifica per Android per la risoluzione dei problemi relativi ai report offuscati.