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.

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 otrzymywać logi ścieżki, które pomogą Ci zrozumieć działania użytkowników prowadzące do awarii, niekrytycznych awarii lub zdarzeń ANR, musisz włączyć Google Analytics w projekcie Firebase.

    • Jeśli w istniejącym projekcie Firebase nie ma Google Analytics możesz włączyć Google Analytics z poziomu Karta Integracje > Ustawienia projektu w konsoli Firebase.

    • 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 obsługiwanych przez Crashlytics platformach z Androidem i Apple (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
    

    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 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: upewnij się, że w projekcie używany jest zalecany konfiguracji wersji (Flutter 3.12.0 i nowszych Crashlyticswtyczki Flutter 3.3.4 lub nowszej), dzięki którym projekt 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. Symbole debugowania musisz przesłać przed zgłasza awarię z 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 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 znajdziesz w artykule Dostosowywanie raportów o awariach.

Krok 3. Wymuś testowy błąd krytyczny, aby zakończyć konfigurację

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

  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ś wyjątek testowy, aby wysłać pierwszy raport aplikacji:

    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 oraz jest włączone Android, błędy niekrytyczne i błędy ANR. Otwórz panel Crashlytics, aby wyświetlić wszystkie raporty i statystyki oraz je analizować.

Dalsze kroki