Получайте читаемые отчеты о сбоях на панели инструментов Crashlytics.


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

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

Платформы Apple

Проверьте конфигурацию для загрузки файлов dSYM

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

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

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

  2. Определите, был ли добавлен сценарий запуска с названием [firebase_crashlytics] Crashlytics Upload Symbols в фазы сборки цели Runner.

    См. соответствующий раздел ниже, чтобы узнать, существует ли сценарий запуска или нет .

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

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

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

андроид

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

Команда 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 (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

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

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