Ошибки отладки в архиве Xcode
Я пытаюсь интегрировать большую унаследованную библиотеку С++ с приложением iOS. Мы можем создавать и запускать на устройстве, но мы не можем архивировать приложение. Архивирование завершается ошибкой со следующей ошибкой.
Команда/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip не удалось с кодом выхода 1
Я сделал "-v" на полосе и получил серию предупреждений, похожих на
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip: символы, на которые ссылаются записи перемещения, которые нельзя удалить:/MyApp/DerivedData/SmartMusic_iPad/Build/Intermediates/ArchiveIntermediates/MyApp/IntermediateBuildFilesPath/UninstalledProducts/libMyLib-iOS.a(MyWhatever.o)
Неясно, является ли это сообщение предупреждением или причиной сбоя. Других признаков проблем с выходом полосы нет. Любые подсказки?
Ответы
Ответ 1
В настройках сборки для цели статической библиотеки выберите НЕТ для "постобработки развертывания" и "отлаживать символы отладки во время копирования". Это скомпилированный код, поэтому он не нуждается в символах.
Я испытывал ту же ошибку ( "usr/bin/strip failed with exit code 1" ), и это исправило это для меня.
Ответ 2
Существуют различные варианты strip
(см. manpage), и я думаю, вы захотите использовать опцию -r
, Вы можете установить тип удаления для выполнения из параметров проекта Xcode. Посмотрите, можете ли вы связать параметры в Xcode с параметрами в man-странице.
Ответ 3
В моем случае я добавил в свою библиотеку следующие настройки целевой сборки и начал нормально работать:
-
Снятие дескриптора кода: НЕТ
-
Разделите символы отладки во время копирования: НЕТ для всех конфигураций
-
Стиль полосы: неглобальные символы
Ответ 4
У меня такая же проблема, но я редактирую DEPLOYMENT POSTPROCESSING
до NO
, но она не работает.
Я только что перешел на вкладку Build Phases
в моей цели, а в Copy Bundle Resources
удалил Foundation.framework
, а затем добавлю Foundation.framework
в Link Binary With Libraries
, он работает для меня!
Надеюсь, что это решит вашу проблему!
Ответ 5
Strip Style
умолчанию в XCode - All Symbols
, который хорошо для исполняемого файла, но для библиотеки вы должны установить это для Non-Global Symbols
поскольку глобальные символы должны быть сохранены.
Поскольку удаление выполняется только как часть постобработки развертывания, отладочные сборки обычно не затрагиваются этим параметром, поскольку для них для параметра DEPLOYMENT_POSTPROCESSING обычно задано значение NO. Но при архивировании вы создаете сборку релиза, и здесь для DEPLOYMENT_POSTPROCESSING по умолчанию установлено значение YES, и поэтому вам необходимо установить правильный стиль стриптиза.
Ответ 6
Попробуйте установить
STRIP_INSTALLED_PRODUCT - Нет для вашей цели (для которой вы получаете ошибку).
если это не сработает, попробуйте ниже вместе с приведенной выше опцией
- Снятие дескриптора кода: НЕТ
- Отладка символов отладки во время копирования: НЕТ для всех конфигураций
- Стиль полосы: неглобальные символы
Надеюсь, это решит вашу проблему.