В этом кратком руководстве описывается, как настроить Firebase Crashlytics в вашем приложении с помощью подключаемого модуля Crashlytics Flutter, чтобы вы могли получать исчерпывающие отчеты о сбоях в консоли Firebase.
Настройка Crashlytics включает использование как инструмента командной строки, так и вашей IDE. Чтобы завершить настройку, вам нужно принудительно создать тестовое исключение, чтобы отправить ваш первый отчет о сбое в Firebase.
Прежде чем вы начнете
Если вы еще этого не сделали, настройте и инициализируйте Firebase в своем проекте Flutter.
Рекомендуется . Чтобы получить такие функции, как пользователи без сбоев, журналы навигации и оповещения о скорости, вам необходимо включить Google Analytics в своем проекте Firebase.
Все платформы Android и Apple, поддерживаемые Crashlytics (кроме watchOS), могут использовать эти функции Google Analytics.
Убедитесь, что Google Analytics включен в вашем проекте Firebase: перейдите в
» > «Настройки проекта» > вкладка «Интеграции» , затем следуйте инструкциям на экране для Google Analytics.
Шаг 1. Добавьте Crashlytics в свой проект Flutter.
В корне вашего проекта Flutter выполните следующую команду, чтобы установить плагин Crashlytics Flutter:
flutter pub add firebase_crashlytics
В корневом каталоге вашего проекта Flutter выполните следующую команду:
flutterfire configure
Выполнение этой команды гарантирует, что конфигурация Firebase вашего приложения Flutter обновлена, а для Android добавляет в ваше приложение необходимый подключаемый модуль Crashlytics Gradle.
После завершения перестройте свой проект Flutter:
flutter run
(Необязательно) Если в вашем проекте Flutter используется флаг
--split-debug-info
(и, необязательно, флаг--obfuscate
), вам необходимо использовать Firebase CLI (v.11.9.0+) для загрузки символов Android.В корневом каталоге вашего проекта Flutter выполните следующую команду:
firebase crashlytics:symbols:upload --app=APP_ID PATH/TO/symbols
Каталог
PATH/TO /symbols
— это тот же каталог, который вы передаете флагу--split-debug-info
при сборке приложения.
Шаг 2. Настройте обработчики сбоев
Вы можете автоматически перехватывать все ошибки, возникающие в среде Flutter, переопределяя FlutterError.onError
с помощью 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());
}
Чтобы отлавливать асинхронные ошибки, которые не обрабатываются инфраструктурой Flutter, используйте 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());
}
Примеры обработки других типов ошибок см. в разделе Настройка отчетов о сбоях .
Шаг 3. Принудительно завершите настройку с помощью тестового сбоя.
Чтобы завершить настройку Crashlytics и увидеть исходные данные на панели инструментов Crashlytics консоли Firebase, вам нужно принудительно выдать тестовое исключение.
Добавьте в свое приложение код, который можно использовать для принудительного создания тестового исключения.
Если вы добавили обработчик ошибок, который вызывает
FirebaseCrashlytics.instance.recordError(error, stack, fatal: true)
вZone
верхнего уровня, вы можете использовать следующий код, чтобы добавить в приложение кнопку, которая при нажатии вызывает тестовое исключение:TextButton( onPressed: () => throw Exception(), child: const Text("Throw Test Exception"), ),
Создайте и запустите свое приложение.
Принудительно вызовите тестовое исключение, чтобы отправить первый отчет вашего приложения:
Откройте свое приложение на тестовом устройстве или в эмуляторе.
В своем приложении нажмите кнопку тестового исключения, которую вы добавили с помощью приведенного выше кода.
Перейдите на панель инструментов Crashlytics консоли Firebase, чтобы увидеть сбой вашего теста.
Если вы обновили консоль и через пять минут по-прежнему не видите сбоя теста, включите ведение журнала отладки , чтобы узнать, отправляет ли ваше приложение отчеты о сбоях.
Вот и все! Теперь Crashlytics отслеживает сбои вашего приложения, а на Android — нефатальные ошибки и ошибки ANR. Посетите панель инструментов Crashlytics , чтобы просмотреть и изучить все свои отчеты и статистику.
Следующие шаги
Настройте отчет о сбоях, добавив дополнительные отчеты, журналы, ключи и отслеживание дополнительных нефатальных ошибок.
Интегрируйте с Google Play , чтобы вы могли фильтровать отчеты о сбоях вашего приложения для Android по отслеживанию Google Play прямо на панели управления Crashlytics. Это позволяет лучше сфокусировать панель инструментов на конкретных сборках.
Просматривайте трассировки стека и статистику сбоев вместе с кодом в окне App Quality Insights в Android Studio (доступно, начиная с Electric Eel 2022.1.1).