| Выберите платформу: | iOS+ Android Android NDK Flutter Unity |
В этом руководстве описано, как начать работу с Firebase Crashlytics в вашем Flutter-приложении.
После установки плагина Crashlytics Flutter в ваше приложение вы сможете получать подробные отчеты о сбоях в консоли Firebase .
Настройка Crashlytics включает в себя использование как инструмента командной строки, так и вашей IDE. Для завершения настройки вам потребуется принудительно вызвать исключение в тесте, чтобы отправить первый отчет о сбое в Firebase.
Прежде чем начать
Если вы еще этого не сделали, настройте и инициализируйте Firebase в своем проекте Flutter.
Рекомендуется : Чтобы автоматически получать навигационные цепочки для анализа действий пользователя, предшествующих сбою, некритическому событию или событию ANR, необходимо включить Google Analytics в вашем проекте Firebase.
При создании нового проекта Firebase включите Google Analytics в процессе создания проекта.
Если вы используете существующий проект Firebase, в котором не включена Google Analytics , вы можете включить её в настройках проекта.
> Страница «Интеграции» в консоли Firebase .
Обратите внимание, что навигационная цепочка доступна для всех платформ Android и Apple, поддерживаемых Crashlytics (кроме watchOS).
Шаг 1 : Добавьте Crashlytics в свой Flutter-проект.
В корневой директории вашего Flutter-проекта выполните следующую команду, чтобы установить плагин Flutter для Crashlytics .
Чтобы использовать функцию "хлебные крошки" (breadcrumb logs) , добавьте в приложение также плагин Flutter для Google Analytics . Убедитесь, что Google Analytics включен в вашем проекте Firebase.
flutter pub add firebase_crashlytics && flutter pub add firebase_analyticsИз корневого каталога вашего Flutter-проекта выполните следующую команду:
flutterfire configureВыполнение этой команды гарантирует актуальность конфигурации Firebase в вашем Flutter-приложении и, для Android, добавляет необходимый плагин Crashlytics Gradle в ваше приложение.
После завершения пересоберите свой проект Flutter:
flutter run(Необязательно) Если в вашем проекте Flutter используется флаг
--split-debug-info(и, при необходимости, также флаг--obfuscate), потребуются дополнительные шаги для отображения читаемых трассировок стека для ваших приложений.Платформы Apple: Убедитесь, что ваш проект использует рекомендуемую версию конфигурации (Flutter 3.12.0+ и плагин Crashlytics Flutter 3.3.4+), чтобы ваш проект мог автоматически генерировать и загружать символы Flutter (файлы dSYM) в Crashlytics .
Android: Используйте Firebase CLI (версия 11.9.0+) для загрузки отладочных символов Flutter. Отладочные символы необходимо загрузить до сообщения о сбое, возникшем в результате сборки обфусцированного кода.
Из корневого каталога вашего Flutter-проекта выполните следующую команду:
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
FIREBASE_APP_ID : Ваш идентификатор приложения Firebase для Android (а не имя пакета).
Пример идентификатора Android-приложения Firebase:1:567383003300:android:17104a2ced0c9b9bВот два способа найти идентификатор вашего приложения Firebase:
В файле
google-services.jsonидентификатор вашего приложения — это значениеmobilesdk_app_id; илиВ консоли Firebase перейдите в настройки проекта . Перейдите к карточке «Ваши приложения» , затем щелкните нужное приложение Firebase, чтобы найти его идентификатор приложения.
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"), ),Создайте и запустите своё приложение.
Чтобы отправить первый отчет вашего приложения, необходимо принудительно вызвать исключение, возникающее в ходе тестирования:
Откройте приложение на тестовом устройстве или эмуляторе.
В вашем приложении нажмите кнопку проверки исключений, которую вы добавили, используя приведенный выше код.
В консоли Firebase перейдите в раздел DevOps & Engagement > Панель Crashlytics , чтобы проверить отчет о сбоях в тестах.
Если после обновления консоли сбой теста по-прежнему не наблюдается через пять минут, включите отладочное логирование, чтобы проверить, отправляет ли ваше приложение отчеты о сбоях.
Вот и всё! Crashlytics теперь отслеживает сбои в вашем приложении, а на Android — некритические ошибки и ANR. Перейдите на панель управления Crashlytics , чтобы просмотреть и проанализировать все ваши отчеты и статистику.
Следующие шаги
Настройте параметры отчетов о сбоях , добавив возможность включения отчетов по желанию пользователя, журналы, ключи и отслеживание дополнительных ошибок, не приводящих к критическим сбоям.
Integrate with Google Play so that you can filter your Android app's crash reports by Google Play track directly in the Crashlytics dashboard. This lets you better focus your dashboard on specific builds.
Просматривайте трассировки стека и статистику сбоев вместе с кодом в окне «Аналитика качества приложений» в Android Studio (доступно начиная с Electric Eel 2022.1.1).
Экспортируйте свои данные в BigQuery или Cloud Logging для расширенного анализа и использования таких функций, как запросы к данным, создание пользовательских панелей мониторинга и настройка пользовательских оповещений.