Pierwsze kroki z Firebase Crashlytics


Ten krótki przewodnik zawiera instrukcje konfigurowania w aplikacji Firebase Crashlytics za pomocą wtyczki Flutter Crashlytics, aby otrzymywać kompleksowe raporty o awariach w konsoli Firebase.

Konfigurowanie Crashlytics wymaga użycia narzędzia wiersza poleceń i IDE. Aby dokończyć konfigurację, musisz wymusić wyjątek testowy, aby wysłać pierwszy raport o awarii do Firebase.

Zanim zaczniesz

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

  2. Zalecane: aby automatycznie otrzymywać logi ścieżki, które pomogą Ci zrozumieć działania użytkowników prowadzące do awarii, niekrytycznych błędów lub zdarzeń 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 ścieżki przewijania są dostępne na wszystkich platformach z Androidem 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 podane niżej polecenie, aby zainstalować wtyczkę Flutter dla Crashlytics.

    Aby korzystać z logów ścieżek, dodaj do aplikacji wtyczkę Fluttera dla 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 aktualność konfiguracji Firebase w aplikacji Flutter. W przypadku Androida doda też do aplikacji wymagany wtyczek 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 też flagi --obfuscate), musisz wykonać dodatkowe czynności, aby wyświetlić czytelne ścieżki stosu w przypadku swoich aplikacji.

    • Platformy Apple: sprawdź, czy Twój projekt korzysta z zalecanej konfiguracji wersji (Flutter 3.12.0 lub nowszej oraz wtyczka Flutter Crashlytics 3.3.4 lub nowsza), aby projekt mógł automatycznie generować i przesyłać symbole Flutter (pliki dSYM) do Crashlytics.

    • Android: użyj interfejsu wiersza poleceń Firebase (w wersji 11.9.0 lub nowszej), aby przesłać symbole debugowania Flutter. Musisz przesłać symbole debugowania przed zgłoszeniem awarii w wersji kompilacji zaciemnionego kodu.

      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ład identyfikatora aplikacji Firebase na Androida: 1:567383003300:android:17104a2ced0c9b9b

      • PATH/TO/symbols: ten sam katalog, który przekazujesz parametrowi --split-debug-info podczas kompilowania aplikacji.

Krok 2. Skonfiguruj moduły obsługi awarii

Możesz automatycznie przechwytywać wszystkie błędy występujące w ramach frameworka Fluttera, zastępując FlutterError.onError wartością 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 wykrywać błędy asynchroniczne, których nie obsługuje platforma 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 znajdziesz w artykule Dostosowanie raportów o awariach.

Krok 3. Wymuś testowe zablokowanie, aby zakończyć konfigurowanie

Aby dokończyć konfigurowanie Crashlytics i zobaczyć początkowe dane w panelu Crashlytics konsoli Firebase, musisz wymusić wyjątek testowy.

  1. Dodaj do aplikacji kod, który spowoduje wyjątek testowy.

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

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

  3. Wymuś wyjątek testowy, aby wysłać pierwszy raport aplikacji:

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

    2. W aplikacji kliknij przycisk wyjątku testowego, który został dodany za pomocą kodu powyżej.

  4. Aby zobaczyć testowy błąd krytyczny, otwórz panel Crashlytics w konsoli Firebase.

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


To wszystko. Crashlytics będzie teraz monitorować Twoją aplikację pod kątem awarii oraz błędów niekrytycznych i błędów ANR na Androidzie. Otwórz panel Crashlytics, aby wyświetlić wszystkie raporty i statystyki oraz je analizować.

Dalsze kroki