Pierwsze kroki z Crashlytics w Flutterze

Wybierz platformę: iOS+ Android Android NDK Flutter Unity


Z tego przewodnika dowiesz się, jak zacząć korzystać z Firebase Crashlytics w aplikacji na Fluttera.

Po skonfigurowaniu Crashlyticswtyczki Flutter w aplikacji możesz uzyskać szczegółowe raporty o awariach w Firebasekonsoli.

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

Zanim zaczniesz

  1. Jeśli jeszcze tego nie zrobiono, skonfiguruj i zainicjuj Firebase w projekcie Flutter.

  2. Zalecane: aby automatycznie otrzymywać dzienniki ścieżki i lepiej poznawać działania użytkowników, które doprowadziły do awarii, błędu niekrytycznego lub zdarzenia ANR, musisz włączyć Google Analytics w projekcie Firebase.

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

    • Jeśli używasz dotychczasowego projektu w Firebase bez włączonej usługiGoogle Analytics, możesz ją włączyć na stronie Ustawienia > Integracje w konsoli Firebase.

    Pamiętaj, że logi ścieżki są dostępne na wszystkich platformach Android i Apple obsługiwanych przez Crashlytics (z wyjątkiem watchOS).

Krok 1. Dodaj Crashlytics do projektu Flutter

  1. W katalogu głównym projektu Flutter uruchom to polecenie, aby zainstalować wtyczkę Fluttera do Crashlytics.

    Aby korzystać z logów działań użytkownika, dodaj do aplikacji wtyczkę Flutter dla Google Analytics. Sprawdź, czy w projekcie w Firebase włączona jest usługa Google Analytics.

    flutter pub add firebase_crashlytics && flutter pub add firebase_analytics
    
  2. W katalogu głównym projektu Flutter uruchom to polecenie:

    flutterfire configure
    

    Uruchomienie tego polecenia zapewnia aktualność konfiguracji Firebase w aplikacji Flutter, a w przypadku Androida dodaje do aplikacji wymagany wtyczkę Crashlytics Gradle.

  3. Po zakończeniu ponownie skompiluj projekt Flutter:

    flutter run
    
  4. (Opcjonalnie) Jeśli Twój projekt Fluttera używa flagi --split-debug-info (i opcjonalnie flagi --obfuscate), musisz wykonać dodatkowe czynności, aby wyświetlać czytelne ślady stosu w swoich aplikacjach.

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

    • Android: użyj Firebase CLI (wersja 11.9.0 lub nowsza), aby przesłać symbole do debugowania Fluttera. Symbole debugowania musisz przesłać przed zgłoszeniem awarii z kompilacji kodu zaciemnionego.

      W katalogu głównym projektu Flutter uruchom to polecenie:

      firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
      • FIREBASE_APP_ID: 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 tworzenia aplikacji.

Krok 2. Skonfiguruj obsługę awarii

Możesz automatycznie przechwytywać wszystkie błędy zgłaszane w ramach Fluttera, zastępując FlutterError.onError tym kodem: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 wychwytywać 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 obsługi innych typów błędów znajdziesz w artykule Dostosowywanie raportów o awariach.

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

Aby dokończyć konfigurowanie Crashlytics i wyświetlić wstępne dane w panelu Crashlytics w konsoli Firebase, musisz wymusić zgłoszenie wyjątku testowego.

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

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

    TextButton(
        onPressed: () => throw Exception(),
        child: const Text("Throw Test Exception"),
    ),
    
  2. Skompiluj i uruchom aplikację.

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

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

    2. W aplikacji naciśnij przycisk testowania wyjątku, który został dodany za pomocą powyższego kodu.

  4. W Firebase konsoli otwórz DevOps i zaangażowanie > Crashlytics panel, aby sprawdzić raport o testowym awarii.

    Jeśli po odświeżeniu konsoli nadal nie widzisz testowego błędu po 5 minutach, włącz rejestrowanie debugowania, aby sprawdzić, czy aplikacja wysyła raporty o błędach.


To wszystko. Crashlytics monitoruje teraz Twoją aplikację pod kątem awarii, a na Androidzie także pod kątem niekrytycznych błędów i błędów ANR. Otwórz Crashlytics panel, aby wyświetlić i sprawdzić wszystkie raporty i statystyki.

Dalsze kroki