В этом кратком руководстве описывается, как настроить Firebase Crashlytics в вашем приложении с помощью плагина Crashlytics Flutter, чтобы вы могли получать подробные отчеты о сбоях в консоли Firebase.
Настройка Crashlytics предполагает использование как инструмента командной строки, так и вашей IDE. Чтобы завершить настройку, вам нужно будет принудительно создать тестовое исключение, чтобы отправить первый отчет о сбое в Firebase.
Прежде чем вы начнете
Если вы еще этого не сделали, настройте и инициализируйте Firebase в своем проекте Flutter.
Рекомендуется : чтобы автоматически получать навигационные журналы и понимать действия пользователей, которые привели к сбою, нефатальному событию или событию ANR, вам необходимо включить Google Analytics в своем проекте Firebase.
Если в вашем существующем проекте Firebase не включен Google Analytics, вы можете включить Google Analytics на вкладке «Интеграции» вашего аккаунта.
Если вы создаете новый проект 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).