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
- Jeśli jeszcze tego nie zrobiono, skonfiguruj i zainicjuj Firebase w projekcie Flutter. 
- 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
- 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
- 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. 
- Po zakończeniu ponownie skompiluj projekt Flutter: - flutter run
- (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-infopodczas 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 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.
- 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)w- Zonenajwyż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"), ),
- Skompiluj i uruchom aplikację. 
- Wymuś zgłoszenie wyjątku testowego, aby wysłać pierwszy raport z aplikacji: - Otwórz aplikację na urządzeniu testowym lub emulatorze. 
- W aplikacji naciśnij przycisk testowego wyjątku, który został dodany za pomocą powyższego kodu. 
 
- Otwórz Crashlytics panel w Firebase 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
- Dostosuj konfigurację raportu o awariach, dodając raportowanie z możliwością rezygnacji, logi, klucze i śledzenie dodatkowych błędów niekrytycznych. 
- Zintegruj z Google Play, aby filtrować raporty o awariach aplikacji na Androida według Google Play ścieżkiGoogle Play bezpośrednio w Crashlytics panelu. Dzięki temu możesz lepiej skupić się na konkretnych kompilacjach. 
- Wyświetlaj ślady stosu i statystyki awarii obok kodu w oknie Statystyki jakości aplikacji w Android Studio (dostępne od wersji Electric Eel 2022.1.1).