| Выберите платформу: | iOS+ Android Flutter Unity |
По умолчанию Firebase Crashlytics автоматически инструментирует ваш Flutter-проект для загрузки необходимых файлов символов, которые обеспечивают деобфускацию и удобочитаемость отчетов о сбоях.
К сожалению, в некоторых случаях проект может быть настроен не полностью. В этом руководстве описано, что делает автоматизация, и приведены первые шаги для отладки настроек вашего проекта.
платформы Apple
Проверьте настройки загрузки файлов dSYM.
Добавление плагина Crashlytics Flutter и запуск команды flutterfire configure попытаются добавить скрипт запуска в рабочую область Xcode вашего проекта, который найдет и загрузит необходимые файлы символов dSYM в Crashlytics . Без этих файлов вы увидите предупреждение «Отсутствуют dSYM» на панели управления Crashlytics , и обработка исключений будет приостановлена бэкэндом до тех пор, пока не будут загружены отсутствующие файлы.
Если у вас возникла эта проблема, сначала убедитесь, что у вас установлен скрипт запуска:
Найдите и откройте файл рабочей области Xcode в каталоге iOS вашего проекта (
FLUTTER_PROJECT_NAME /ios/Runner.xcworkspace).Проверьте, добавлен ли скрипт выполнения с названием
[firebase_crashlytics] Crashlytics Upload Symbolsв раздел Build Phases целевого объекта Runner.См. соответствующий раздел ниже, чтобы узнать, существует ли скрипт выполнения или нет .
Если этот скрипт запуска отсутствует , вы можете добавить его вручную:
Найдите идентификатор приложения Firebase для вашего приложения Apple. Вот два разных места, где вы можете найти этот идентификатор:
В консоли Firebase перейдите в свой
> Настройки проекта . Перейдите к карточке «Ваши приложения» , затем щелкните по своему приложению Firebase Apple, чтобы просмотреть информацию о приложении, включая его идентификатор приложения (App ID) . В корневом каталоге вашего проекта Flutter найдите файл
firebase_options.dart. Идентификатор приложения Firebase для вашего приложения Apple обозначен какappId.
Нажмите > «Новый этап выполнения скрипта» .
Убедитесь, что этот новый этап выполнения скрипта является последним этапом сборки вашего проекта. В противном случае Crashlytics не сможет корректно обрабатывать файлы dSYM.
Разверните новый раздел «Выполнить скрипт» .
В поле «Скрипт» (расположенное под заголовком «Оболочка ») добавьте следующие скрипты выполнения.
Эти скрипты обрабатывают ваши файлы dSYM и загружают их в Crashlytics .
$PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase --validate -ai FIREBASE_APP_ID -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM
$PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase -ai FIREBASE_APP_ID -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM
- FIREBASE_APP_ID : Ваш идентификатор приложения Firebase в Apple (а не идентификатор пакета Apple).
Пример идентификатора приложения Firebase Apple:1:1234567890:ios:321abc456def7890
Вот два способа найти идентификатор вашего приложения Firebase:
В файле
GoogleService-Info.plistидентификатор вашего приложения — это значениеGOOGLE_APP_ID; илиВ консоли Firebase перейдите в настройки проекта . Перейдите к карточке «Ваши приложения» , затем щелкните нужное приложение Firebase, чтобы найти его идентификатор приложения.
- FIREBASE_APP_ID : Ваш идентификатор приложения Firebase в Apple (а не идентификатор пакета Apple).
В разделе «Входные файлы» укажите пути к следующим файлам:
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist$(TARGET_BUILD_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/GoogleService-Info.plist
$(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)
Если скрипт запуска существует, обратитесь к руководству Apple по устранению неполадок с dSYM . Если вы решите загрузить файлы dSYM описанным способом, вам потребуется выполнить следующие дополнительные шаги:
Найдите идентификатор приложения Firebase для вашего приложения Apple. Вот два разных места, где вы можете найти этот идентификатор:
В консоли Firebase перейдите в свой
> Настройки проекта . Перейдите к карточке «Ваши приложения» , затем щелкните по своему приложению Firebase Apple, чтобы просмотреть информацию о приложении, включая его идентификатор приложения (App ID) . В корневом каталоге вашего проекта Flutter найдите файл
firebase_options.dart. Идентификатор приложения Firebase для вашего приложения Apple обозначен какappId.
При запуске скрипта
upload-symbolsиспользуйтевместо-ai FIREBASE_APPLE_APP_ID-gsp /path/to/GoogleService-Info.plist.
Проверьте конфигурацию версий 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 (а не имя пакета).
Пример идентификатора Android-приложения Firebase:1:567383003300:android:17104a2ced0c9b9bВот два способа найти идентификатор вашего приложения Firebase:
В файле
google-services.jsonидентификатор вашего приложения — это значениеmobilesdk_app_id; илиВ консоли Firebase перейдите в настройки проекта . Перейдите к карточке «Ваши приложения» , затем щелкните нужное приложение Firebase, чтобы найти его идентификатор приложения.
PATH/TO /symbols: Тот же каталог, который вы указываете в флаге--split-debug-infoпри сборке приложения.
Если проблемы сохраняются, обратитесь к руководству по устранению неполадок с зашифрованными отчетами для Android .