Pierwsze kroki z Firebase Crashlytics

Z tego krótkiego wprowadzenia dowiesz się, jak skonfigurować Firebase Crashlytics w swojej aplikacji z wtyczką Crashlytics Flutter, która pozwala na kompleksowe w konsoli Firebase.

Aby skonfigurować Crashlytics, musisz użyć narzędzia wiersza poleceń i swojego IDE. Aby zakończyć konfigurację, musisz wymusić zgłoszenie wyjątku testowego, co spowoduje wysłanie raport o pierwszej awarii do Firebase.

Zanim zaczniesz

  1. Jeśli jeszcze nie masz tego za sobą, skonfigurować i zainicjować Firebase w narzędziu Flutter, w projektach AI.

  2. Zalecane: aby automatycznie pobierać logi menu nawigacyjnego aby poznać działania użytkowników, które prowadzą do awarii, zdarzeń niekrytycznych lub błędów ANR; musisz włączyć Google Analytics w swoim projekcie Firebase.

    • Jeśli w istniejącym projekcie Firebase nie masz Google Analytics możesz włączyć Google Analytics z poziomu kartę Integracje usługi > Ustawienia projektu w konsoli Firebase.

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

    Pamiętaj, że dzienniki menu nawigacyjnego są dostępne dla wszystkich platform Apple i Android obsługiwane przez Crashlytics (z wyjątkiem watchOS).

Krok 1. Dodaj Crashlytics do projektu Flutter

  1. W katalogu głównym projektu Flutter uruchom poniższe polecenie, aby zainstalować wtyczki Flutter do Crashlytics.

    Aby skorzystać z dzienniki menu nawigacyjnego, dodaj też do swojej aplikacji wtyczkę Flutter dla Google Analytics. Upewnij się, że Usługa Google Analytics jest włączona w projekcie Firebase.

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

    flutterfire configure
    

    Uruchamiając to polecenie, masz pewność, że konfiguracja Firebase aplikacji Flutter jest aktualny, a na Androidzie dodaje wymagany Gradle Crashlytics wtyczki do aplikacji.

  3. Po zakończeniu odbuduj projekt Flutter:

    flutter run
    
  4. (Opcjonalnie) Jeśli Twój projekt Flutter używa flagi --split-debug-info (oraz opcjonalnie także flagę --obfuscate) dodatkowe kroki: wymagane do wyświetlania czytelnych zrzutów stosu aplikacji.

    • Platformy Apple: upewnij się, że w projekcie używany jest zalecany konfiguracji wersji (Flutter 3.12.0 i nowszych wtyczki Crashlytics Flutter 3.3.4 lub nowszej), dzięki czemu projekt automatycznie generować i przesyłać symbole Flutter (pliki dSYM) do Crashlytics

    • Android: użyj interfejsu wiersza poleceń Firebase (11.9.0 lub nowszego), aby przesyłać dane Symbole debugowania Flutter. Symbole debugowania musisz przesłać przed zgłasza awarię z kompilacji zaciemnionego kodu.

      W katalogu głównym projektu Flutter uruchom to polecenie 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 co są przekazywane do flagi --split-debug-info podczas tworzenia aplikacji,

Krok 2. Skonfiguruj moduły obsługi awarii

Możesz automatycznie wychwytywać wszystkie błędy zgłaszane w ramach technologii Flutter tę platformę, zastępując FlutterError.onError 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 funkcji 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 dokończyć konfigurację

Aby dokończyć konfigurację Crashlytics i zobaczyć w niej dane początkowe panelu konsoli Firebase, musisz wymusić ustawienie wyjątku testowego rzucona.

  1. Dodaj do swojej aplikacji kod, który służy do wymuszania wyjątku testowego rzucona.

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

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

  3. Wymuś zgłoszenie wyjątku testowego, aby móc wysłać pierwszy kod raport:

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

    2. W aplikacji naciśnij przycisk testowania wyjątku dodany za pomocą powyżej.

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

    Jeśli po odświeżeniu konsoli nadal nie widzisz awarii testowej po 5 minutach. włącz rejestrowanie debugowania aby sprawdzić, czy aplikacja wysyła raporty o awariach.


To wszystko. Crashlytics monitoruje teraz Twoją aplikację pod kątem awarii i, Android, błędy niekrytyczne i błędy ANR. Odwiedź Panel Crashlytics do wyświetlania i analizowania wszystkich raportów i statystyk.

Dalsze kroki