Начните работу с Crashlytics для Flutter

Выберите платформу: iOS+ Android Android NDK Flutter Unity


В этом руководстве описано, как начать работу с Firebase Crashlytics в вашем Flutter-приложении.

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

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

Прежде чем начать

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

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

    • Если в вашем существующем проекте Firebase не включена Google Analytics , вы можете включить Google Analytics на вкладке «Интеграции» вашего проекта. > Настройки проекта в консоли Firebase .

    • При создании нового проекта Firebase включите Google Analytics в процессе создания проекта.

    Обратите внимание, что навигационная цепочка доступна для всех платформ Android и Apple, поддерживаемых Crashlytics (кроме watchOS).

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

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

    Чтобы использовать функцию "хлебные крошки" (breadcrumb logs) , добавьте в приложение также плагин Flutter для Google Analytics . Убедитесь, что Google Analytics включен в вашем проекте Firebase.

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

    flutterfire configure
    

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

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

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

      • 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 , чтобы просмотреть и проанализировать все ваши отчеты и статистику.

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