| Wybierz platformę: | iOS+ Android Android NDK Flutter Unity |
Z tego przewodnika dowiesz się, jak zacząć korzystać z Firebase Crashlytics w aplikacji na Flattera.
Po skonfigurowaniu w aplikacji Crashlyticswtyczki Fluttera możesz uzyskać szczegółowe raporty o awariach w Firebasekonsoli.
Konfigurowanie Crashlytics wymaga użycia zarówno narzędzia wiersza poleceń, jak i IDE. Aby zakończyć konfigurację, musisz wymusić zgłoszenie wyjątku testowego, aby wysłać pierwszy raport o awarii do Firebase.
Zanim zaczniesz
Jeśli jeszcze tego nie zrobisz, 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 w Firebase.
Jeśli tworzysz nowy projekt w Firebase, włącz Google Analytics w trakcie procesu tworzenia projektu.
Jeśli używasz dotychczasowego projektu w Firebase bez włączonej usługi Google Analytics, możesz ją włączyć na stronie
Ustawienia > Integracje w konsoli Firebase.
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 nawigacyjnej, dodaj do aplikacji wtyczkę Flutter dla Google Analytics. Sprawdź, czy w projekcie w Firebase włączona jest usługa Google Analytics.
flutter pub add firebase_crashlytics && flutter pub add firebase_analyticsW katalogu głównym projektu Flutter uruchom to polecenie:
flutterfire configureUruchomienie 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 zaciemnionej wersji kodu.
W głównym katalogu 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:17104a2ced0c9b9bPATH/TO/symbols: ten sam katalog, który przekazujesz do flagi--split-debug-infopodczas tworzenia aplikacji.
Krok 2. Skonfiguruj obsługę awarii
Możesz automatycznie wychwytywać 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ę testu, aby zakończyć konfigurację
Aby dokończyć konfigurację Crashlytics i wyświetlić pierwsze dane na Crashlytics panelu Firebase konsoli, musisz wymusić zgłoszenie wyjątku testowego.
Dodaj do aplikacji kod, który umożliwi wymuszenie zgłoszenia wyjątku testowego.
Jeśli dodasz procedurę obsługi błędów, która wywołuje funkcję
FirebaseCrashlytics.instance.recordError(error, stack, fatal: true)wZonenajwyższym poziomie, możesz użyć tego kodu, aby dodać do aplikacji przycisk, który po naciśnięciu zgłosi 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.
W konsoli Firebase otwórz DevOps i zaangażowanie > Crashlytics panel, aby sprawdzić raport o błędzie testowym.
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 Crashlytics panel, aby wyświetlić i sprawdzić wszystkie raporty i statystyki.
Dalsze kroki
Dostosuj konfigurację raportów o awariach, dodając raportowanie oparte na zgodzie użytkowników, 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żkiCrashlytics bezpośrednio w panelu. Dzięki temu możesz lepiej dostosować panel do konkretnych wersji.
Wyświetlaj zrzuty stosu i statystyki awarii obok kodu w oknie Statystyki jakości aplikacji w Androidzie Studio (dostępne od wersji Electric Eel 2022.1.1).
Eksportuj dane do BigQuery lub Cloud Logging w celu przeprowadzania zaawansowanych analiz i korzystania z funkcji takich jak wysyłanie zapytań dotyczących danych, tworzenie paneli niestandardowych i konfigurowanie alertów niestandardowych.