| Выберите платформу: | iOS+ Android Android NDK Flutter Unity |
В этом руководстве описано, как начать работу с Firebase Crashlytics в вашем Flutter-приложении.
После установки плагина 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 .
Чтобы использовать функцию "хлебные крошки" (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"), ),Создайте и запустите своё приложение.
Чтобы отправить первый отчет вашего приложения, необходимо принудительно вызвать исключение, возникающее в ходе тестирования:
Откройте приложение на тестовом устройстве или эмуляторе.
В вашем приложении нажмите кнопку проверки исключений, которую вы добавили, используя приведенный выше код.
Чтобы увидеть сбой вашего теста, перейдите на панель Crashlytics в консоли Firebase .
Если после обновления консоли сбой теста по-прежнему не наблюдается через пять минут, включите отладочное логирование, чтобы проверить, отправляет ли ваше приложение отчеты о сбоях.
Вот и всё! Crashlytics теперь отслеживает сбои в вашем приложении, а на Android — некритические ошибки и ANR. Перейдите на панель управления Crashlytics , чтобы просмотреть и проанализировать все ваши отчеты и статистику.
Следующие шаги
Настройте параметры отчетов о сбоях , добавив возможность включения отчетов по желанию пользователя, журналы, ключи и отслеживание дополнительных ошибок, не приводящих к критическим сбоям.
Интеграция с Google Play позволит вам фильтровать отчеты о сбоях вашего Android-приложения по отслеживанию Google Play непосредственно на панели Crashlytics . Это позволит вам более точно сфокусировать внимание на конкретных сборках.
Просматривайте трассировки стека и статистику сбоев вместе с кодом в окне «Аналитика качества приложений» в Android Studio (доступно начиная с Electric Eel 2022.1.1).