Pierwsze kroki z Firebase Crashlytics


Z tego krótkiego przewodnika dowiesz się, jak skonfigurować Firebase Crashlytics w aplikacji za pomocą Crashlytics wtyczki Fluttera, aby otrzymywać w konsoli Firebase szczegółowe raporty o awariach.

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 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 w dotychczasowym projekcie Firebase nie masz włączonej usługi Google Analytics, możesz ją włączyć na karcie Integracje w sekcji  > Ustawienia projektu w konsoli Firebase.Google Analytics

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

    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 ścieżki, dodaj do aplikacji wtyczkę Fluttera do Google Analytics. Sprawdź, czy w projekcie 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, że konfiguracja Firebase w aplikacji Flutter jest aktualna, a w przypadku Androida dodaje do aplikacji wymagany wtyczkę CrashlyticsGradle.

  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 Fluttera 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 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 wyłapywać 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 dokończyć konfigurację

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

  1. Dodaj do aplikacji kod, który umożliwi wymuszenie zgłoszenia wyjątku testowego.

    Jeśli dodasz moduł obsługi błędów, który wywołuje funkcję FirebaseCrashlytics.instance.recordError(error, stack, fatal: true)Zone najwyższego poziomu, możesz użyć tego kodu, aby dodać do aplikacji przycisk, który po naciśnięciu zgłasza 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 testowego wyjątku, który został dodany za pomocą powyższego kodu.

  4. Otwórz Crashlytics panelFirebase konsoli, aby zobaczyć testowy błąd.

    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 błędów niekrytycznych i błędów ANR. Otwórz Crashlyticspanel, aby wyświetlić i przeanalizować wszystkie raporty i statystyki.

Dalsze kroki