По умолчанию 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
) убедитесь, что у вас есть следующие настройки:
Откройте вкладку «Фазы сборки» , а затем разверните раздел «Выполнить сценарий» .
В разделе «Входные файлы» убедитесь, что у вас указаны пути к расположению следующих файлов:
${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 отображает предупреждение «Missing dSYM» в консоли Firebase . Если вы получили это предупреждение, сначала проверьте, что Xcode создает правильный dSYM для каждой сборки:
Откройте свой проект в Xcode, а затем выберите файл проекта в Xcode Navigator.
Выберите основную цель сборки.
Откройте вкладку «Параметры сборки» целевого объекта и нажмите «Все» .
Поиск
debug information format
.Установите формат отладочной информации на DWARF с файлом dSYM для всех типов сборок.
Перестройте свое приложение.
Ваши отчеты о сбоях теперь должны отображаться на панели инструментов 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
на диске:
В Xcode откройте окно Organizer , а затем выберите свое приложение из списка. Xcode отобразит список архивов для вашего проекта.
Щелкните архив, удерживая клавишу Control, чтобы просмотреть его в Finder. Щелкните его еще раз, удерживая клавишу Control, а затем щелкните Показать содержимое пакета .
Внутри
.xcarchive
находится каталог dSYMs, содержащий файлы dSYM, созданные в процессе архивирования Xcode.
Загрузите ваши dSYM-файлы
Crashlytics поддерживает несколько способов загрузки файлов dSYMs: автоматически или вручную .
(Рекомендуется) Автоматически обрабатывайте ваши 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
.