Zacznij korzystać z Firebase Crashlytics

W tym przewodniku Szybki start opisano, jak skonfigurować Firebase Crashlytics w aplikacji za pomocą wtyczki Crashlytics Flutter, aby uzyskać kompleksowe raporty o awariach w konsoli Firebase.

Konfigurowanie Crashlytics wymaga użycia zarówno narzędzia wiersza poleceń, jak i środowiska IDE. Aby zakończyć konfigurację, musisz wymusić zgłoszenie wyjątku testowego, aby wysłać pierwszy raport o awarii do Firebase.

Zanim zaczniesz

  1. Jeśli jeszcze tego nie zrobiłeś, skonfiguruj i zainicjuj Firebase w swoim projekcie Flutter.

  2. Zalecane : aby automatycznie pobierać dzienniki nawigacyjne umożliwiające zrozumienie działań użytkownika prowadzących do awarii, zdarzenia niekrytycznego lub zdarzenia ANR, musisz włączyć Google Analytics w swoim projekcie Firebase.

    • Jeśli Twój istniejący projekt Firebase nie ma włączonej usługi Google Analytics, możesz ją włączyć na karcie Integracje w swoim > Ustawienia projektu w konsoli Firebase.

    • Jeśli tworzysz nowy projekt Firebase, włącz Google Analytics podczas tworzenia projektu.

    Należy pamiętać, że dzienniki nawigacji są dostępne dla wszystkich platform Android i Apple obsługiwanych przez Crashlytics (z wyjątkiem systemu watchOS).

Krok 1 : Dodaj Crashlytics do swojego projektu Flutter

  1. W katalogu głównym projektu Flutter uruchom następujące polecenie, aby zainstalować wtyczkę Flutter dla Crashlytics.

    Aby skorzystać z dzienników nawigacyjnych , dodaj także do swojej aplikacji wtyczkę Flutter do Google Analytics. Upewnij się, że w Twoim projekcie Firebase jest włączona usługa Google Analytics .

    flutter pub add firebase_crashlytics && flutter pub add firebase_analytics
    
  2. Z katalogu głównego projektu Flutter uruchom następującą komendę:

    flutterfire configure
    

    Uruchomienie tego polecenia gwarantuje, że konfiguracja Firebase aplikacji Flutter jest aktualna, a w przypadku systemu Android dodaje do aplikacji wymaganą wtyczkę Crashlytics Gradle.

  3. Po zakończeniu odbuduj swój projekt Flutter:

    flutter run
    
  4. (Opcjonalnie) Jeśli Twój projekt Flutter używa flagi --split-debug-info (i opcjonalnie także flagi --obfuscate ), wymagane są dodatkowe kroki, aby wyświetlić czytelne ślady stosu dla Twoich aplikacji.

    • Platformy Apple: Upewnij się, że Twój projekt korzysta z zalecanej wersji konfiguracji (Flutter 3.12.0+ i wtyczka Crashlytics Flutter 3.3.4+), aby Twój projekt mógł automatycznie generować i przesyłać symbole Flutter (pliki dSYM) do Crashlytics.

    • Android: Użyj interfejsu CLI Firebase (wersja 11.9.0 lub nowsza), aby przesłać symbole debugowania Flutter. Zanim zgłosisz awarię spowodowaną zaciemnioną kompilacją kodu, musisz przesłać symbole debugowania.

      Z katalogu głównego projektu Flutter uruchom następującą komendę:

      firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
      • FIREBASE_APP_ID : Twój identyfikator aplikacji Firebase na Androida (nie nazwa pakietu)
        Przykładowy identyfikator aplikacji Firebase na Androida: 1:567383003300:android:17104a2ced0c9b9b

      • PATH/TO /symbols : ten sam katalog, który przekazujesz do flagi --split-debug-info podczas budowania aplikacji

Krok 2 : Skonfiguruj programy obsługi awarii

Możesz automatycznie wyłapać wszystkie błędy generowane w ramach Flutter, zastępując FlutterError.onError za pomocą 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());
}

Aby wychwycić błędy asynchroniczne, które nie są obsługiwane przez platformę Flutter, użyj 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());

}

Przykłady postępowania z innymi typami błędów można znaleźć w artykule Dostosowywanie raportów o awariach .

Krok 3 : Wymuś awarię testową, aby zakończyć konfigurację

Aby zakończyć konfigurowanie Crashlytics i zobaczyć początkowe dane w panelu kontrolnym Crashlytics konsoli Firebase, musisz wymusić zgłoszenie wyjątku testowego.

  1. Dodaj do aplikacji kod, którego możesz użyć do wymuszenia zgłoszenia wyjątku testowego.

    Jeśli dodałeś moduł obsługi błędów wywołujący FirebaseCrashlytics.instance.recordError(error, stack, fatal: true) do najwyższego poziomu Zone , możesz użyć poniższego kodu, aby dodać do aplikacji przycisk, który po naciśnięciu generuje zgłoszenie wyjątek testowy:

    TextButton(
        onPressed: () => throw Exception(),
        child: const Text("Throw Test Exception"),
    ),
    
  2. Kompiluj i uruchamiaj swoją aplikację.

  3. Wymuś zgłoszenie wyjątku testowego, aby wysłać pierwszy raport aplikacji:

    1. Otwórz aplikację na urządzeniu testowym lub emulatorze.

    2. W aplikacji naciśnij przycisk wyjątku testu dodany za pomocą powyższego kodu.

  4. Przejdź do panelu Crashlytics konsoli Firebase, aby zobaczyć awarię testową.

    Jeśli odświeżyłeś konsolę i po pięciu minutach nadal nie widzisz awarii testowej, włącz rejestrowanie debugowania , aby sprawdzić, czy aplikacja wysyła raporty o awariach.


I to wszystko! Crashlytics monitoruje teraz Twoją aplikację pod kątem awarii, a w systemie Android – błędów niekrytycznych i błędów ANR. Odwiedź pulpit nawigacyjny Crashlytics , aby wyświetlić i sprawdzić wszystkie swoje raporty i statystyki.

Następne kroki