Catch up on highlights from Firebase at Google I/O 2023. Learn more

Начните работу с Firebase Crashlytics

В этом кратком руководстве описывается, как настроить Firebase Crashlytics в вашем приложении с помощью подключаемого модуля Crashlytics Flutter, чтобы вы могли получать исчерпывающие отчеты о сбоях в консоли Firebase.

Настройка Crashlytics включает использование как инструмента командной строки, так и вашей IDE. Чтобы завершить настройку, вам нужно принудительно создать тестовое исключение, чтобы отправить ваш первый отчет о сбое в Firebase.

Прежде чем вы начнете

  1. Если вы еще этого не сделали, настройте и инициализируйте Firebase в своем проекте Flutter.

  2. Рекомендуется . Чтобы получить такие функции, как пользователи без сбоев, журналы навигации и оповещения о скорости, вам необходимо включить Google Analytics в своем проекте Firebase.

    Все платформы Android и Apple, поддерживаемые Crashlytics (кроме watchOS), могут использовать эти функции Google Analytics.

    Убедитесь, что Google Analytics включен в вашем проекте Firebase: перейдите в » > «Настройки проекта» > вкладка «Интеграции» , затем следуйте инструкциям на экране для Google Analytics.

Шаг 1. Добавьте Crashlytics в свой проект Flutter.

  1. В корне вашего проекта Flutter выполните следующую команду, чтобы установить плагин Crashlytics Flutter:

    flutter pub add firebase_crashlytics
    
  2. В корневом каталоге вашего проекта Flutter выполните следующую команду:

    flutterfire configure
    

    Выполнение этой команды гарантирует, что конфигурация Firebase вашего приложения Flutter обновлена, а для Android добавляет в ваше приложение необходимый подключаемый модуль Crashlytics Gradle.

  3. После завершения перестройте свой проект Flutter:

    flutter run
    
  4. (Необязательно) Если в вашем проекте 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, вам нужно принудительно выдать тестовое исключение.

  1. Добавьте в свое приложение код, который можно использовать для принудительного создания тестового исключения.

    Если вы добавили обработчик ошибок, который вызывает FirebaseCrashlytics.instance.recordError(error, stack, fatal: true) в Zone верхнего уровня, вы можете использовать следующий код, чтобы добавить в приложение кнопку, которая при нажатии вызывает тестовое исключение:

    TextButton(
        onPressed: () => throw Exception(),
        child: const Text("Throw Test Exception"),
    ),
    
  2. Создайте и запустите свое приложение.

  3. Принудительно вызовите тестовое исключение, чтобы отправить первый отчет вашего приложения:

    1. Откройте свое приложение на тестовом устройстве или в эмуляторе.

    2. В своем приложении нажмите кнопку тестового исключения, которую вы добавили с помощью приведенного выше кода.

  4. Перейдите на панель инструментов Crashlytics консоли Firebase, чтобы увидеть сбой вашего теста.

    Если вы обновили консоль и через пять минут по-прежнему не видите сбоя теста, включите ведение журнала отладки , чтобы узнать, отправляет ли ваше приложение отчеты о сбоях.


Вот и все! Теперь Crashlytics отслеживает сбои вашего приложения, а на Android — нефатальные ошибки и ошибки ANR. Посетите панель инструментов Crashlytics , чтобы просмотреть и изучить все свои отчеты и статистику.

Следующие шаги