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


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

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

Убедитесь, что Xcode может автоматически обрабатывать dSYM-файлы и загружать файлы.

При настройке 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 выводит предупреждение «Отсутствует dSYM» в консоли Firebase . Если вы получили такое предупреждение, сначала проверьте, создаёт ли Xcode правильный dSYM для каждой сборки:

  1. Откройте свой проект в Xcode, а затем выберите файл проекта в Xcode Navigator.

  2. Выберите основную цель сборки.

  3. Откройте вкладку «Параметры сборки» целевого объекта, а затем нажмите «Все» .

  4. Поиск debug information format .

  5. Установите формат отладочной информации на 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 не вернула результатов, вы можете поискать его в каталоге Products , где находится ваше .app (по умолчанию каталог Products находится в Derived Data ). Если ваше приложение находится в рабочей среде, вы также можете поискать его dSYM-файл в каталоге .xcarchive на диске:

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

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

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

Загрузите ваши dSYM-файлы

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

(Рекомендуется) Автоматически обрабатывайте ваши dSYM-файлы и загружайте файлы

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

Загрузите файлы dSYM вручную

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

  • Вариант 1 : используйте консольную опцию «Перетаскивания» для загрузки zip-файла, содержащего файлы dSYM (перейдите в консоль Firebase > Crashlytics > вкладка dSYMs ).

  • Вариант 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 .