| Wybierz platformę: | iOS+ Android Android NDK Flutter Unity |
Z tego przewodnika dowiesz się, jak zacząć korzystać z Firebase Crashlytics w aplikacji Flutter.
Po skonfigurowaniu wtyczki Crashlytics Flutter w aplikacji możesz otrzymywać obszerne raporty o awariach w konsoli Firebase.
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
Zalecane: aby automatycznie otrzymywać dzienniki ścieżki nawigacyjnej, które pomogą Ci zrozumieć działania użytkowników prowadzące 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 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ę Flutter do Crashlytics.
Aby korzystać z logów ścieżki, dodaj też do aplikacji wtyczkę Flutter do Google Analytics. Upewnij się, że Google Analytics jest włączona w projekcie w Firebase.
flutter pub add firebase_crashlytics && flutter pub add firebase_analyticsW katalogu głównym projektu Flutter uruchom to polecenie:
flutterfire configureUruchomienie tego polecenia spowoduje, że konfiguracja Firebase w aplikacji Flutter będzie aktualna, a w przypadku Androida do aplikacji zostanie dodana wymagana wtyczka Crashlytics Gradle.
Po zakończeniu ponownie skompiluj projekt Flutter:
flutter run(Opcjonalnie) Jeśli projekt Flutter używa flagi
--split-debug-info(i opcjonalnie flagi--obfuscate), aby wyświetlać czytelne ślady stosu w aplikacjach, musisz wykonać dodatkowe czynności.Platformy Apple: upewnij się, że projekt używa zalecanej konfiguracji wersji (Flutter 3.12.0 lub nowsza i Crashlytics wtyczka Flutter 3.3.4 lub nowsza), aby projekt mógł automatycznie generować i przesyłać symbole Flutter (pliki dSYM) do Crashlytics.
Android: użyj Firebase CLI (w wersji 11.9.0 lub nowszej), aby przesłać symbole debugowania Flutter. Symbole debugowania musisz przesłać zanim zgłosisz awarię 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: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 przechwytywać wszystkie błędy zgłaszane w ramach platformy Flutter, zastępując FlutterError.onError przez 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 przechwytywać 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 zakończyć konfigurację
Aby zakończyć konfigurowanie Crashlytics i wyświetlić wstępne dane na Crashlytics panelu Firebase konsoli, musisz wymusić zgłoszenie wyjątku testowego.
Dodaj do aplikacji kod, którego możesz użyć, aby wymusić zgłoszenie wyjątku testowego.
Jeśli dodasz obsługę błędów, która wywołuje
FirebaseCrashlytics.instance.recordError(error, stack, fatal: true)w strefie najwyższego poziomuZone, 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 aplikacji:
Otwórz aplikację na urządzeniu testowym lub emulatorze.
W aplikacji naciśnij przycisk wyjątku testowego, który został dodany za pomocą powyższego kodu.
W konsoli Firebase otwórz panel DevOps i zaangażowanie > Crashlytics, aby sprawdzić raport o awarii testowej .
Jeśli po odświeżeniu konsoli nadal nie widzisz awarii testowej po 5 minutach, włącz logowanie debugowania aby sprawdzić, czy aplikacja wysyła raporty o awariach.
To wszystko. Crashlytics monitoruje teraz aplikację pod kątem awarii, a na Androidzie – pod kątem 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 raportowanie za zgodą użytkownika, logi, klucze i śledzenie dodatkowych błędów niekrytycznych.
Zintegruj się z Google Play aby móc filtrować raporty o awariach aplikacji na Androida według ścieżki Google Play bezpośrednio na panelu Crashlytics. 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).
Eksportuj dane do BigQuery lub Cloud Logging aby korzystać z zaawansowanych analiz i funkcji, takich jak wysyłanie zapytań o dane, tworzenie niestandardowych paneli i konfigurowanie niestandardowych alertów.