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

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


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

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

Как настроить автоматическую обработку dSYM-файлов и их загрузку в Xcode

При настройке Crashlytics в приложении вы настроили скрипт для автоматической обработки файлов dSYM и их загрузки.

Убедитесь, что конфигурация скрипта Crashlytics соответствует новым требованиям, которые начали действовать с Xcode 15. Если ваша конфигурация устарела, может появиться ошибка
error: Info.plist Error Unable to process Info.plist at path ....

В частности, Xcode 15 и более поздние версии требуют указывать более полный набор местоположений файлов. Чтобы запустить скрипт Crashlytics (firebase-ios-sdk/Crashlytics/run), убедитесь, что у вас выполнены следующие настройки:

  1. Нажмите на вкладку Этапы сборки и разверните раздел Выполнить скрипт.

  2. В разделе Входные файлы убедитесь, что указаны пути к следующим файлам:

    ${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)
    Если в настройках сборки проекта у вас есть ENABLE_USER_SCRIPT_SANDBOXING=YES и ENABLE_DEBUG_DYLIB=YES, добавьте следующее:
    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}.debug.dylib

Как проверить, создает ли Xcode файлы dSYM

Чаще всего файлы dSYM отсутствуют, потому что Xcode их не создает. Если загрузка не удалась, Crashlytics в консоли Firebase появится предупреждение "Отсутствует файл dSYM". Если вы получили это предупреждение, сначала убедитесь, что Xcode создает правильный файл dSYM для каждой сборки:

  1. Откройте проект в Xcode и выберите файл проекта в навигаторе Xcode.

  2. Выберите основное назначение сборки.

  3. Откройте вкладку Build Settings (Настройки сборки) целевого объекта и нажмите All (Все).

  4. Искать по запросу "debug information format".

  5. Для всех типов сборки задайте для параметра Debug Information Format (Формат отладочной информации) значение DWARF with dSYM File (DWARF с файлом dSYM).

  6. Пересоберите приложение.

Отчеты о сбоях должны появиться на панели управления Crashlytics. Если проблема не исчезнет или вы столкнетесь с другими ошибками, попробуйте найти файлы dSYM и загрузить их в Crashlytics вручную.

Как найти файлы dSYM на локальном компьютере

Выполните следующую команду, чтобы посмотреть все UUID файлов dSYM на вашем компьютере и найти недостающий файл dSYM:

mdfind -name .dSYM | while read -r line; do dwarfdump -u "$line"; done

Найдя файл dSYM, загрузите его в Crashlytics вручную. Если команда mdfind не возвращает никаких результатов, вы можете поискать файл dSYM в каталоге Products, где находится ваш файл .app (по умолчанию каталог Products находится в Derived Data). Если ваше приложение выпущено в производство, вы также можете найти его dSYM в каталоге .xcarchive на диске:

  1. В Xcode откройте окно Organizer и выберите приложение из списка. В Xcode появится список архивов для вашего проекта.

  2. Чтобы посмотреть архив в Finder, нажмите на него, удерживая клавишу Control. Ещё раз нажмите на него, удерживая клавишу Control, и выберите Показать содержимое пакета.

  3. В каталоге .xcarchive находится каталог dSYMs, который содержит файлы dSYM, созданные в процессе архивирования Xcode.

Как загрузить файлы dSYM

Crashlytics поддерживает несколько способов загрузки файлов dSYM: автоматический и ручной.

Рекомендуется. Автоматически обрабатывать файлы dSYM и загружать их.

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

Как загрузить файлы dSYM вручную

Если автоматическая загрузка не работает, вы можете загрузить файлы dSYM вручную одним из следующих способов:

  • Вариант 1. Используйте интерфейс перетаскивания в консоли Firebase, чтобы загрузить ZIP-файл с файлами dSYM (перейдите на вкладку DevOps & Engagement (DevOps и взаимодействие) > Crashlytics > dSYMs (dSYM-файлы)).

  • Вариант 2. Используйте скрипт upload-symbols, который можно вызвать из любого места в процессе сборки, чтобы вручную загрузить файлы dSYM. Чтобы запустить скрипт upload-symbols, используйте один из следующих вариантов:

    • Вариант А. Добавьте в процесс сборки следующую строку:

      find dSYM_DIRECTORY -name "*.dSYM" | xargs -I \{\} $PODS_ROOT/FirebaseCrashlytics/upload-symbols -gsp /PATH/TO/GoogleService-Info.plist -p PLATFORM \{\}
    • Вариант Б. Запустите скрипт непосредственно из терминала:

      /PATH/TO/PODS/DIRECTORY/FirebaseCrashlytics/upload-symbols -gsp /PATH/TO/GoogleService-Info.plist -p ios /PATH/TO/dSYMs

    Чтобы посмотреть примечания по использованию и дополнительные инструкции для этого скрипта, запустите upload-symbols с параметром --help.