Questa guida rapida descrive come configurare Firebase Crashlytics nella tua app con il plug-in Flutter Crashlytics in modo da poter ottenere report sugli arresti anomali completi nella console Firebase.
La configurazione di Crashlytics prevede l'utilizzo sia di uno strumento a riga di comando sia dell'IDE. Per completare la configurazione, devi forzare la generazione di un'eccezione di test per inviare il primo report sugli arresti anomali a Firebase.
Prima di iniziare
Se non l'hai ancora fatto, configura e inizializza Firebase nel tuo progetto Flutter.
Consigliato: per ottenere automaticamente i log dei breadcrumb per comprendere le azioni dell'utente che hanno portato a un evento di arresto anomalo, non irreversibile o ANR, devi attivare Google Analytics nel tuo progetto Firebase.
Se il tuo progetto Firebase esistente non ha Google Analytics abilitato, puoi abilitare Google Analytics dalla scheda Integrazioni di
nella console > Impostazioni progettoFirebase. Se crei un nuovo progetto Firebase, abilita Google Analytics durante il flusso di lavoro di creazione del progetto.
Tieni presente che i log breadcrumb sono disponibili per tutte le piattaforme Android e Apple supportate da Crashlytics (tranne watchOS).
Passaggio 1: aggiungi Crashlytics al tuo progetto Flutter
Dalla radice del progetto Flutter, esegui il seguente comando per installare il plug-in Flutter per Crashlytics.
Per usufruire dei log 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
Dalla directory principale del progetto Flutter, esegui questo 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 CrashlyticsGradle richiesto alla tua app.
Al termine, ricompila il progetto Flutter:
flutter run
(Facoltativo) Se il tuo progetto Flutter utilizza il flag
--split-debug-info
(e, facoltativamente, anche il flag--obfuscate
), sono necessari passaggi aggiuntivi per mostrare stack trace leggibili per le tue app.Piattaforme Apple: assicurati che il tuo progetto utilizzi la configurazione della versione consigliata (Flutter 3.12.0+ e plug-in Flutter 3.3.4+) in modo che possa generare e caricare automaticamente i simboli Flutter (file dSYM) su Crashlytics.Crashlytics
Android:utilizza la CLI Firebase (v.11.9.0+) per caricare i simboli di debug di Flutter. Devi caricare i simboli di debug prima di segnalare un arresto anomalo da una build di codice offuscato.
Dalla directory principale del progetto Flutter, esegui questo comando:
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
FIREBASE_APP_ID: l'ID app Firebase per Android (non il nome del pacchetto)
Esempio di ID app Firebase per Android:1:567383003300:android:17104a2ced0c9b9b
PATH/TO/symbols
: la stessa directory che passi al flag--split-debug-info
durante la creazione dell'applicazione
Passaggio 2: configura i gestori di arresti anomali
Puoi rilevare automaticamente tutti gli errori generati all'interno del framework Flutter eseguendo l'override di 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 la generazione di un'eccezione di test.
Aggiungi alla tua app un codice che puoi utilizzare per forzare la generazione di un'eccezione di test.
Se hai aggiunto un gestore di errori che chiama
FirebaseCrashlytics.instance.recordError(error, stack, fatal: true)
alZone
di primo livello, puoi utilizzare il seguente codice per aggiungere un pulsante alla tua app che, quando viene premuto, genera un'eccezione di test:TextButton( onPressed: () => throw Exception(), child: const Text("Throw Test Exception"), ),
Crea ed esegui la tua app.
Forza la generazione dell'eccezione di test per inviare il primo report della tua app:
Apri l'app dal dispositivo di test o dall'emulatore.
Nell'app, premi il pulsante di test dell'eccezione che hai aggiunto utilizzando il codice riportato sopra.
Vai alla dashboard Crashlytics della console Firebase per visualizzare l'arresto anomalo del test.
Se hai aggiornato la console e non vedi ancora l'arresto anomalo del test dopo cinque minuti, attiva la registrazione di debug per verificare se la tua app invia report sugli arresti anomali.
E questo è tutto. Crashlytics ora monitora la tua app per rilevare arresti anomali e, su
Android, errori non irreversibili e ANR. Visita la
dashboard Crashlytics
per visualizzare e analizzare tutti i report e le statistiche.
Passaggi successivi
Personalizza la configurazione dei report sugli arresti anomali aggiungendo report con consenso esplicito, log, chiavi e monitoraggio di ulteriori errori non irreversibili.
Esegui l'integrazione con Google Play per poter filtrare i report sugli arresti anomali della tua app per Android in base alla traccia Google Play direttamente nella dashboard Crashlytics. In questo modo puoi concentrare meglio la dashboard su build specifiche.
Visualizza stack trace e statistiche sugli arresti anomali insieme al tuo codice con la finestra Insight sulla qualità delle app in Android Studio (disponibile a partire da Electric Eel 2022.1.1).