| Выберите платформу: | iOS+ Android Flutter Unity |
По умолчанию Firebase Crashlytics автоматически настраивает проект Flutter для загрузки необходимых файлов символов, чтобы отчеты о сбоях были деобфусцированы и понятны человеку.
К сожалению, в некоторых случаях проект может быть настроен не полностью. В этом руководстве рассказывается, как работает автоматизация, и приводятся первые шаги по отладке настройки проекта.
Платформы Apple
Проверьте конфигурацию для загрузки файлов dSYM
При добавлении плагина Crashlytics Flutter и выполнении команды flutterfire configure будет предпринята попытка добавить скрипт запуска в рабочую область Xcode вашего проекта, который находит и загружает необходимые файлы символов dSYM в Crashlytics. Без этих файлов на панели управления Crashlytics появится оповещение "Отсутствует dSYM", а исключения будут храниться на сервере до тех пор, пока вы не загрузите недостающие файлы.
Если вы столкнулись с этой проблемой, сначала убедитесь, что у вас установлен скрипт запуска:
Найдите и откройте файл рабочей области Xcode в каталоге iOS проекта (
FLUTTER_PROJECT_NAME/ios/Runner.xcworkspace).Проверьте, добавлен ли скрипт запуска с названием
[firebase_crashlytics] Crashlytics Upload Symbolsв раздел Build Phases (Этапы сборки) целевого объекта Runner.Ознакомьтесь с разделом ниже, в зависимости от того, существует ли скрипт запуска или нет.
Проверьте конфигурацию версий для 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:17104a2ced0c9b9bPATH/TO/symbols– тот же каталог, который вы передаете флагу--split-debug-infoпри создании приложения.
Если проблема не исчезнет, ознакомьтесь с руководством по устранению неполадок с обфусцированными отчетами для Android.