Inizia a utilizzare Firebase Crashlytics


Questa guida rapida descrive come configurare Firebase Crashlytics nella tua app con il plug-in Flutter Crashlytics in modo da poter ricevere report completi sugli arresti anomali nella console Firebase.

La configurazione di Crashlytics richiede l'utilizzo sia di uno strumento a riga di comando sia dell'IDE. Per completare la configurazione, dovrai forzare la generazione di un'eccezione di test per inviare il tuo primo report sugli arresti anomali a Firebase.

Prima di iniziare

  1. Se non lo hai già fatto, configura e inizializza Firebase nel tuo progetto Flutter.

  2. Consigliato: per ottenere automaticamente i log dei breadcrumb per comprendere le azioni dell'utente che hanno portato a un arresto anomalo, a un evento non irreversibile o ANR, devi attivare Google Analytics nel tuo progetto Firebase.

    • Se nel tuo progetto Firebase esistente Google Analytics non è abilitato, puoi attivarlo dalla scheda Integrazioni del tuo > Impostazioni progetto nella console Firebase.

    • Se stai creando un nuovo progetto Firebase, abilita Google Analytics durante il flusso di lavoro di creazione del progetto.

    Tieni presente che i log dei breadcrumb sono disponibili per tutte le piattaforme Android e Apple supportate da Crashlytics (tranne watchOS).

Passaggio 1: aggiungi Crashlytics al tuo progetto Flutter

  1. Dalla directory radice del tuo progetto Flutter, esegui questo comando per installare il plug-in Flutter per Crashlytics.

    Per sfruttare i log dei breadcrumb, aggiungi anche il plug-in Flutter per Google Analytics alla tua app. Assicurati che Google Analytics sia abilitato nel tuo progetto Firebase.

    flutter pub add firebase_crashlytics && flutter pub add firebase_analytics
    
  2. Dalla directory principale del progetto Flutter, esegui il seguente comando:

    flutterfire configure
    

    L'esecuzione di questo comando garantisce che la configurazione Firebase della tua app Flutter sia aggiornata e, per Android, aggiunge il plug-in Crashlytics Gradle obbligatorio all'app.

  3. Al termine, ricostruisci il progetto Flutter:

    flutter run
    
  4. (Facoltativo) Se il progetto Flutter utilizza il flag --split-debug-info e, facoltativamente, anche il flag --obfuscate, sono necessari passaggi aggiuntivi per mostrare analisi dello stack leggibili per le tue app.

    • Piattaforme Apple: assicurati che il progetto utilizzi la configurazione della versione consigliata (Flutter 3.12.0 o versioni successive e Crashlyticsplug-in Flutter 3.3.4 o versioni successive) in modo che il progetto possa generare e caricare automaticamente i simboli Flutter (file dSYM) su Crashlytics.

    • Android:utilizza l'interfaccia a riga di comando Firebase (v.11.9.0 e versioni successive) per caricare simboli di debug più fluidi. Devi caricare i simboli di debug prima di segnalare un arresto anomalo da una build di codice offuscata.

      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)
        ID app Firebase per Android di esempio: 1:567383003300:android:17104a2ced0c9b9b

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

Passaggio 2: configura i gestori degli arresti anomali

Puoi rilevare automaticamente tutti gli errori generati all'interno del framework Flutter overriding FlutterError.onError con FirebaseCrashlytics.instance.recordFlutterFatalError:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await Firebase.initializeApp();

  // Pass all uncaught "fatal" errors from the framework to Crashlytics
  FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError;

  runApp(MyApp());
}

Per rilevare gli errori asincroni non gestiti dal framework Flutter, utilizza PlatformDispatcher.instance.onError:

Future<void> main() async {
    WidgetsFlutterBinding.ensureInitialized();
    await Firebase.initializeApp();
    FlutterError.onError = (errorDetails) {
      FirebaseCrashlytics.instance.recordFlutterFatalError(errorDetails);
    };
    // Pass all uncaught asynchronous errors that aren't handled by the Flutter framework to Crashlytics
    PlatformDispatcher.instance.onError = (error, stack) {
      FirebaseCrashlytics.instance.recordError(error, stack, fatal: true);
      return true;
    };
    runApp(MyApp());

}

Per esempi su come gestire altri tipi di errori, consulta Personalizzare i report sugli arresti anomali.

Passaggio 3: forza un arresto anomalo del test per completare la configurazione

Per completare la configurazione di Crashlytics e visualizzare i dati iniziali nella dashboard Crashlytics della console Firebase, devi forzare l'invio di un'eccezione di test.

  1. Aggiungi alla tua app codice da utilizzare per forzare l'invio di un'eccezione di test.

    Se hai aggiunto un gestore degli errori che chiama FirebaseCrashlytics.instance.recordError(error, stack, fatal: true) all'elemento Zone di primo livello, puoi utilizzare il seguente codice per aggiungere alla tua app un pulsante che, quando viene premuto, genera un'eccezione di test:

    TextButton(
        onPressed: () => throw Exception(),
        child: const Text("Throw Test Exception"),
    ),
    
  2. Crea ed esegui la tua app.

  3. Forza la generazione dell'eccezione di test per inviare il primo report per la tua app:

    1. Apri l'app dal dispositivo di test o dall'emulatore.

    2. Nell'app, premi il pulsante di test dell'eccezione che hai aggiunto utilizzando il codice riportato sopra.

  4. Vai alla dashboard di Crashlytics della console Firebase per visualizzare l'errore di arresto anomalo del test.

    Se hai aggiornato la console e dopo cinque minuti non vedi ancora l'arresto anomalo del test, abilita la registrazione di debug per verificare se la tua app sta inviando report sugli arresti anomali.


E questo è tutto. Crashlytics ora monitora la tua app per rilevare arresti anomali e, su Android, errori non fatali e ANR. Vai alla dashboard Crashlytics per visualizzare ed esaminare tutti i report e le statistiche.

Passaggi successivi