Ошибки отладки в архиве 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 - Нет для вашей цели (для которой вы получаете ошибку). если это не сработает, попробуйте ниже вместе с приведенной выше опцией

  • Снятие дескриптора кода: НЕТ
  • Отладка символов отладки во время копирования: НЕТ для всех конфигураций
  • Стиль полосы: неглобальные символы

Надеюсь, это решит вашу проблему.