Как получать понятные отчеты о сбоях на панели управления Crashlytics (Flutter)

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


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

К сожалению, иногда проект не удается настроить полностью. В этом руководстве рассказывается, что делает автоматизация, и приводятся первые шаги по отладке настроек проекта.

Платформы Apple

Как проверить настройки загрузки файлов dSYM

При добавлении плагина Flutter Crashlytics и выполнении команды flutterfire configure в рабочую область Xcode вашего проекта будет добавлен скрипт, который находит и загружает необходимые файлы символов dSYM в Crashlytics. Без этих файлов на панели управления Crashlytics появится предупреждение "Отсутствует dSYM", а исключения будут храниться на сервере, пока вы не загрузите недостающие файлы.

Если у вас возникла эта проблема, сначала убедитесь, что у вас установлен скрипт run:

  1. Найдите и откройте файл рабочей области Xcode в каталоге iOS проекта (FLUTTER_PROJECT_NAME/ios/Runner.xcworkspace).

  2. Проверьте, добавлен ли в фазы сборки целевого объекта Runner скрипт выполнения с названием [firebase_crashlytics] Crashlytics Upload Symbols.

    Ниже вы найдете информацию о том, существует ли скрипт или нет.

Проверьте конфигурацию версии для Flutter и Crashlytics (если вы используете флаг --split-debug-info).

Если в вашем проекте Flutter используется флаг --split-debug-info (и, возможно, флаг --obfuscate), чтобы в приложении показывались понятные трассировки стека, необходимо выполнить дополнительные действия.

Убедитесь, что в вашем проекте используется рекомендуемая конфигурация версий (Flutter 3.12.0+ и Crashlytics плагин Flutter 3.3.4+), чтобы проект мог автоматически создавать и загружать символы Flutter (файлы dSYM) в Crashlytics.

Android

Проверьте конфигурацию зависимостей

Команда flutterfire configure пытается добавить необходимые зависимости в файлы сборки Gradle вашего проекта. Без этих зависимостей отчеты о сбоях в консоли Firebase могут быть обфусцированы, если включена обфускация.

Убедитесь, что в файлах build.gradle на уровне проекта и приложения build.gradle есть следующие строки:

  • В файле сборки на уровне проекта (android/build.gradle) проверьте, есть ли следующая строка:

    dependencies {
    // ... other dependencies
    
    classpath 'com.google.gms:google-services:4.3.5'
    classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1'
    }
  • В файле сборки на уровне приложения (android/app/build.gradle) найдите следующую строку:

    // ... other imports
    
    android {
    // ... your android config
    }
    
    dependencies {
    // ... your dependencies
    }
    
    // This section must appear at the bottom of the file
    apply plugin: 'com.google.gms.google-services'
    apply plugin: 'com.google.firebase.crashlytics'

Убедитесь, что вы используете CLI для загрузки символов Flutter (если используете флаг --split-debug-info).

Если в вашем проекте Flutter используется флаг --split-debug-info (и, возможно, флаг --obfuscate), чтобы в приложении показывались понятные трассировки стека, необходимо выполнить дополнительные действия.

Используйте Firebase CLI (версия 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

  • PATH/TO/symbols – тот же каталог, который вы передаете флагу --split-debug-info при создании приложения.

Если проблема не исчезнет, ознакомьтесь с руководством по устранению неполадок с обфусцированными отчетами для Android.