Z tego krótkiego wprowadzenia dowiesz się, jak skonfigurować Firebase Crashlytics w swojej aplikacji, korzystając z wtyczki Crashlytics Flutter, aby otrzymywać kompleksowe raporty o awariach w konsoli Firebase.
Aby skonfigurować Crashlytics, musisz użyć narzędzia wiersza poleceń i IDE. Aby dokończyć konfigurację, musisz wymusić wysłanie wyjątku testowego do Firebase.
Zanim zaczniesz
Skonfiguruj i zainicjuj Firebase w projekcie Flutter, jeśli jeszcze go nie masz.
Zalecane: aby automatycznie pobierać dzienniki menu nawigacyjnego, które pozwalają analizować działania użytkowników, które prowadzą do awarii, błędów niekrytycznych lub błędów ANR, musisz włączyć Google Analytics w swoim projekcie Firebase.
Jeśli w istniejącym projekcie Firebase nie masz włączonej usługi Google Analytics, możesz włączyć Google Analytics na karcie Integracje w konsoli Firebase na stronie
. > Ustawienia projektu Jeśli tworzysz nowy projekt Firebase, włącz Google Analytics w trakcie procesu tworzenia projektu.
Pamiętaj, że logi menu nawigacyjnego są dostępne na wszystkich platformach Android i Apple obsługiwanych przez Crashlytics (z wyjątkiem watchOS).
Krok 1. Dodaj Crashlytics do projektu Flutter
Aby zainstalować wtyczkę Flutter na potrzeby Crashlytics, uruchom w katalogu głównym projektu Flutter polecenie wymienione poniżej.
Aby korzystać z dzienników menu nawigacyjnego, dodaj do swojej aplikacji wtyczkę Flutter do Google Analytics. Upewnij się, że w projekcie Firebase masz włączoną usługę 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 sprawi, że konfiguracja Firebase Twojej aplikacji Flutter będzie aktualna, a w przypadku Androida doda do aplikacji wymaganą wtyczkę Crashlytics Gradle.
Gdy skończysz, ponownie utwórz projekt Flutter:
flutter run
(Opcjonalnie) Jeśli Twój projekt Flutter używa flagi
--split-debug-info
(i opcjonalnie również flagi--obfuscate
), musisz wykonać dodatkowe czynności, aby wyświetlić czytelne zrzuty stosu swoich aplikacji.Platformy Apple: sprawdź, czy Twój projekt używa zalecanej konfiguracji wersji (Flutter 3.12.0+ i wtyczka Crashlytics Flutter 3.3.4 lub nowsze), aby projekt mógł automatycznie generować symbole Flutter (pliki dSYM) i przesyłać je do Crashlytics.
Android: użyj interfejsu wiersza poleceń Firebase (wersja 11.9.0 lub nowsza), aby przesłać symbole debugowania Flutter. Symbole do debugowania musisz przesłać przed zgłoszeniem awarii przez kompilację z zaciemnionym kodem.
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 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 moduły obsługi awarii
Aby automatycznie wychwytywać wszystkie błędy zgłaszane w ramce Flutter, zastąp FlutterError.onError
za pomocą parametru 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 wychwycić błędy asynchroniczne, które nie są obsługiwane przez platformę Flutter, użyj kodu 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 w przypadku 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ć dane początkowe w panelu Crashlytics w konsoli Firebase, musisz wymusić wysłanie wyjątku testowego.
Dodaj do aplikacji kod, za pomocą którego możesz wymuszać wywołanie wyjątku testowego.
Jeśli dodasz moduł obsługi błędów, który wywołuje
FirebaseCrashlytics.instance.recordError(error, stack, fatal: true)
doZone
najwyższego poziomu, możesz dodać do aplikacji przycisk, który po jego naciśnięciu wywołuje wyjątek testowy:TextButton( onPressed: () => throw Exception(), child: const Text("Throw Test Exception"), ),
Stwórz i uruchom aplikację.
Wymuś zgłoszenie wyjątku testowego, aby wysłać pierwszy raport dotyczący aplikacji:
Otwórz aplikację z urządzenia testowego lub emulatora.
W aplikacji naciśnij przycisk testowania wyjątku dodany za pomocą powyższego kodu.
Otwórz panel Crashlytics w 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 Twoja aplikacja wysyła raporty o awariach.
To wszystko. Crashlytics monitoruje teraz Twoją aplikację pod kątem awarii, a na Androidzie – błędów niekrytycznych i błędów ANR. Otwórz panel Crashlytics, aby wyświetlić i przeanalizować wszystkie raporty i statystyki.
Dalsze kroki
Dostosuj konfigurację raportów o awariach, dodając raporty wymagające zgody, logi, klucze i śledząc dodatkowe błędy niekrytyczne.
Integracja z Google Play pozwala filtrować raporty o awariach aplikacji na Androida według ścieżki Google Play bezpośrednio w panelu Crashlytics. Dzięki temu możesz skupić się na panelu na konkretnych kompilacjach.
Wyświetlaj zrzuty stosu i statystyki awarii razem z kodem w oknie Statystyki jakości aplikacji w Android Studio (dostępne od Electric Eel 2022.1.1).