В этом кратком руководстве описывается, как настроить Firebase Crashlytics в вашем приложении с помощью плагина Crashlytics Flutter, чтобы вы могли получать подробные отчеты о сбоях в консоли Firebase .
Настройка Crashlytics предполагает использование как инструмента командной строки, так и вашей IDE. Чтобы завершить настройку, вам нужно будет принудительно создать тестовое исключение, чтобы отправить первый отчет о сбое в Firebase.
Прежде чем начать
Если вы еще этого не сделали, настройте и инициализируйте Firebase в своем проекте Flutter.
Рекомендуется : чтобы автоматически получать навигационные журналы и понимать действия пользователей, приведшие к сбою, нефатальному событию или событию ANR, вам необходимо включить Google Analytics в своем проекте Firebase.
Если в вашем существующем проекте Firebase не включен Google Analytics , вы можете включить Google Analytics на вкладке «Интеграции» вашего аккаунта.
Firebase . > Настройки проекта в консолиЕсли вы создаете новый проект Firebase, включите Google Analytics во время рабочего процесса создания проекта.
Обратите внимание, что навигационные журналы доступны для всех платформ Android и Apple, поддерживаемых Crashlytics (кроме watchOS).
Шаг 1. Добавьте Crashlytics в свой проект Flutter.
Из корня вашего проекта Flutter выполните следующую команду, чтобы установить плагин Flutter для Crashlytics .
Чтобы воспользоваться преимуществами навигационных журналов , добавьте в свое приложение плагин 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 (v.11.9.0+) для загрузки символов отладки Flutter. Вам необходимо загрузить символы отладки , прежде чем сообщать о сбое из-за запутанной сборки кода.
В корневом каталоге вашего проекта Flutter выполните следующую команду:
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
FIREBASE_APP_ID : идентификатор вашего приложения Firebase для Android (а не имя вашего пакета).
Пример идентификатора приложения Firebase для Android: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"), ),
Создайте и запустите свое приложение.
Принудительно выдайте тестовое исключение, чтобы отправить первый отчет вашего приложения:
Откройте приложение на тестовом устройстве или в эмуляторе.
В своем приложении нажмите кнопку тестового исключения, которую вы добавили с помощью приведенного выше кода.
Перейдите на панель управления Crashlytics консоли Firebase , чтобы увидеть сбой вашего теста.
Если вы обновили консоль и по-прежнему не видите сбой теста через пять минут, включите ведение журнала отладки , чтобы узнать, отправляет ли ваше приложение отчеты о сбоях.
И все! Crashlytics теперь отслеживает ваше приложение на предмет сбоев, а на Android — нефатальных ошибок и ошибок ANR. Посетите панель управления Crashlytics чтобы просмотреть и изучить все ваши отчеты и статистику.
Следующие шаги
Настройте настройку отчета о сбоях , добавив дополнительные отчеты, журналы, ключи и отслеживание дополнительных нефатальных ошибок.
Интегрируйтесь с Google Play , чтобы можно было фильтровать отчеты о сбоях вашего приложения Android по трекам Google Play прямо на панели управления Crashlytics . Это позволяет вам лучше сосредоточить панель управления на конкретных сборках.
Просматривайте трассировки стека и статистику сбоев вместе с вашим кодом с помощью окна App Quality Insights в Android Studio (доступно начиная с Electric Eel 2022.1.1).
В этом кратком руководстве описывается, как настроить Firebase Crashlytics в вашем приложении с помощью плагина Crashlytics Flutter, чтобы вы могли получать подробные отчеты о сбоях в консоли Firebase .
Настройка Crashlytics предполагает использование как инструмента командной строки, так и вашей IDE. Чтобы завершить настройку, вам нужно будет принудительно создать тестовое исключение, чтобы отправить первый отчет о сбое в Firebase.
Прежде чем начать
Если вы еще этого не сделали, настройте и инициализируйте Firebase в своем проекте Flutter.
Рекомендуется : чтобы автоматически получать навигационные журналы и понимать действия пользователей, приведшие к сбою, нефатальному событию или событию ANR, вам необходимо включить Google Analytics в своем проекте Firebase.
Если в вашем существующем проекте Firebase не включен Google Analytics , вы можете включить Google Analytics на вкладке «Интеграции» вашего аккаунта.
Firebase . > Настройки проекта в консолиЕсли вы создаете новый проект Firebase, включите Google Analytics во время рабочего процесса создания проекта.
Обратите внимание, что навигационные журналы доступны для всех платформ Android и Apple, поддерживаемых Crashlytics (кроме watchOS).
Шаг 1. Добавьте Crashlytics в свой проект Flutter.
Из корня вашего проекта Flutter выполните следующую команду, чтобы установить плагин Flutter для Crashlytics .
Чтобы воспользоваться преимуществами навигационных журналов , добавьте в свое приложение плагин 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 (v.11.9.0+) для загрузки символов отладки Flutter. Вам необходимо загрузить символы отладки , прежде чем сообщать о сбое из-за запутанной сборки кода.
В корневом каталоге вашего проекта Flutter выполните следующую команду:
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
FIREBASE_APP_ID : идентификатор вашего приложения Firebase для Android (а не имя вашего пакета).
Пример идентификатора приложения Firebase для Android: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"), ),
Создайте и запустите свое приложение.
Принудительно выдайте тестовое исключение, чтобы отправить первый отчет вашего приложения:
Откройте приложение на тестовом устройстве или в эмуляторе.
В своем приложении нажмите кнопку тестового исключения, которую вы добавили с помощью приведенного выше кода.
Перейдите на панель управления Crashlytics консоли Firebase , чтобы увидеть сбой вашего теста.
Если вы обновили консоль и по-прежнему не видите сбой теста через пять минут, включите ведение журнала отладки , чтобы узнать, отправляет ли ваше приложение отчеты о сбоях.
И все! Crashlytics теперь отслеживает ваше приложение на предмет сбоев, а на Android — нефатальных ошибок и ошибок ANR. Посетите панель управления Crashlytics чтобы просмотреть и изучить все ваши отчеты и статистику.
Следующие шаги
Настройте настройку отчета о сбоях , добавив дополнительные отчеты, журналы, ключи и отслеживание дополнительных нефатальных ошибок.
Интегрируйтесь с Google Play , чтобы вы могли фильтровать отчеты о сбоях вашего приложения Android по трекам Google Play прямо на панели управления Crashlytics . Это позволяет вам лучше сосредоточить панель управления на конкретных сборках.
Просматривайте трассировки стека и статистику сбоев вместе с вашим кодом с помощью окна App Quality Insights в Android Studio (доступно начиная с Electric Eel 2022.1.1).
Этот QuickStart описывает, как настроить Firebase Crashlytics в вашем приложении с помощью плагина Crashlytics Flutter, чтобы вы могли получить всеобъемлющие отчеты о сбоях в консоли Firebase .
Настройка Crashlytics включает в себя использование как инструмента командной строки, так и вашей IDE. Чтобы закончить настройку, вам нужно будет вытеснить тестовое исключение, чтобы отправить ваш первый отчет о сбое в Firebase.
Прежде чем начать
Если вы еще этого не сделали, настройте и инициализируйте Firebase в своем проекте Flutter.
Рекомендуется : чтобы автоматически получить журналы Breadcrumb, чтобы понять действия пользователя, предшествующие сбою, нерадосленному или ANR, вам необходимо включить Google Analytics в вашем проекте Firebase.
Если ваш существующий проект Firebase не включен Google Analytics , вы можете включить Google Analytics с вкладки «Интеграции »
Firebase . > Настройки проекта в консолиЕсли вы создаете новый проект Firebase, включите Google Analytics во время рабочего процесса создания проекта.
Обратите внимание, что журналы Breadcrumb доступны для всех платформ Android и Apple, поддерживаемых Crashlytics (кроме WatchOS).
Шаг 1 : Добавьте Crashlytics в ваш проект Flutter
Из корня вашего проекта Flutter запустите следующую команду, чтобы установить плагин Flutter для Crashlytics .
Чтобы воспользоваться журналами Breadcrumb , также добавьте плагин 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 (v.11.9.0+) для загрузки символов отладки Flutter. Вам необходимо загрузить символы отладки , прежде чем сообщать о сбое из-за запутанной сборки кода.
В корневом каталоге вашего проекта Flutter выполните следующую команду:
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
FIREBASE_APP_ID : идентификатор приложения Android Firebase (не имя вашего пакета)
Пример Firebase Android идентификатор приложения: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"), ),
Создайте и запустите свое приложение.
Заставьте тестовое исключение, чтобы быть брошенным, чтобы отправить первый отчет вашего приложения:
Откройте свое приложение с вашего тестового устройства или эмулятора.
В вашем приложении нажмите кнопку «Исключение тестирования», которую вы добавили, используя приведенный выше код.
Перейдите к приборной панели Crashlytics на консоли Firebase , чтобы увидеть ваш тестовый аварий.
Если вы обновили консоль, и вы все еще не видите испытательного сбоя через пять минут, включите журнал отладки, чтобы увидеть, отправляет ли ваше приложение отчеты о сбоях.
И все! Crashlytics теперь контролирует ваше приложение на предмет сбоев и, на Android, не лечебные ошибки и ANRS. Посетите панель панели Crashlytics , чтобы просмотреть и расследовать все ваши отчеты и статистику.
Следующие шаги
Настройте настройку отчета об аварии , добавив отчеты Opt-In, журналы, ключи и отслеживание дополнительных нефильных ошибок.
Интегрируйте с Google Play , чтобы вы могли отфильтровать отчеты о сбоях приложения Android от Google Play Track непосредственно на панели Crashlytics . Это позволяет вам лучше сосредоточить свою панель инструментов на определенных сборках.
Просмотреть следы стека и статистика сбоя наряду с вашим кодом с окном App Quality Insights в Android Studio (доступно с Electric Eel 2022.1.1).