Архивирование Xcode 6 и получение предупреждения Пропуск полосы фазы копирования, двоичный код подписывается при добавлении расширения общего ресурса к цели

Я получил это предупреждение, когда добавил расширение общего доступа к своему проекту и архивировал его предупреждение: пропуск фазы копирования, двоичный код подписан: /UninstalledProducts/XXX.appex/XXXX

Старый вопрос не дает понимания, чтобы исправить это. Поэтому я решил спросить еще раз. Предупреждение во время архивации приложения с расширением iOS 8 в Xcode 6

Может кто-нибудь объяснить, почему это происходит? Это потому, что цель расширения уже подписана кодом? Если да, то как решить?

Я знал, что установка «Удалить символы отладки во время копирования» на «НЕТ» может убрать это предупреждение. Но на самом деле это не решает проблему. И в чем недостаток не «удаления символа отладки»? Потому что размер моего архива остается прежним, независимо от того, устанавливаю ли я для этого значение ДА или НЕТ.


person Kong Hantrakool    schedule 10.12.2014    source источник


Ответы (5)


Не отключайте Strip Debug Symbols During Copy в своем проекте приложения. Это раздует ваше приложение (если у вас есть другие неподписанные зависимости).

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

Вы должны оставить все как есть.

person Monstieur    schedule 23.04.2015
comment
Спасибо за Ваш ответ. Можете ли вы уточнить детали того, что установка «Нет» для символов отладки полосы во время копирования приведет к раздуванию приложения? - person Kong Hantrakool; 23.04.2015
comment
Релизная версия приложения не должна содержать символы отладки. - person Monstieur; 24.04.2015
comment
Я думаю, вы путаете COPY_PHASE_STRIP (отображается в настройках сборки Xcode как символы отладки во время копирования) и STRIP_INSTALLED_PRODUCT (удалить связанный продукт). - person Daniel Rinser; 05.06.2015
comment
Первый влияет только на скопированные двоичные файлы, но не на сам связанный продукт. Из документации: ДА: Скопированные двоичные файлы лишены символов отладки. Это не приводит к удалению бинарного файла, созданного компоновщиком. Используйте STRIP_INSTALLED_PRODUCT, чтобы компоновщик удалил двоичный файл. - person Daniel Rinser; 05.06.2015
comment
Как вы говорите, фреймворк уже был раздет, поэтому нет необходимости делать это снова на этапе копирования. - person Daniel Rinser; 05.06.2015
comment
Но при отладке моего приложения я также не хочу, чтобы моя отладочная сборка фреймворка удалялась во время копирования. - person Monstieur; 17.02.2016
comment
Мне кажется, что Дэниэл прямо здесь. По умолчанию в проектах Xcode теперь COPY_PHASE_STRIP имеет значение NO как для отладки, так и для выпуска. Но STRIP_INSTALLED_PRODUCT имеет значение YES как для отладки, так и для выпуска. Эта настройка заглушает ошибки и по-прежнему удаляет отладочную информацию для выпусков. - person Simone Manganelli; 24.08.2017
comment
Итак, мы должны оставить все как есть или установить COPY_PHASE_STRIP выпуск в NO? - person Van Du Tran; 15.09.2017
comment
Если Дэниел был прав, нам нужно установить STRIP_INSTALLED_PRODUCT в NO для отладки. По умолчанию STRIP_INSTALLED_PRODUCT (Strip Linked Product) имеет значение YES для всех, но символы отладки все еще присутствуют. - person cyanide; 19.08.2018

«Скомпилированный код обычно содержит отладочную информацию. Этот отладочный материал полезен для проверки работающего кода в отладчике, но в меньшей степени для оптимизированного кода, который вы поставляете в дистрибутивных сборках. Поэтому он удаляется при выполнении архивной сборки.

Проблема здесь в том, что PBXCp не может удалить символы отладки из подписанных двоичных файлов, потому что это сделало бы цифровую подпись недействительной. Поэтому, если у вас есть проект, созданный до Xcode 6.3, вы теперь получите подобное предупреждение.

Чтобы исправить предупреждение, просто измените оба значения на NO. Удаление их не работает, потому что значение по умолчанию по-прежнему YES для обоих. Шаблоны проектов, поставляемые с Xcode 6.3, по умолчанию отключены. Только проекты, которые были начаты с более старыми шаблонами, по-прежнему имеют ДА в строке «Выпуск».

Источник: https://www.cocoanetics.com/2015/04/skipping-copy-phase-strip/

person Luis Ascorbe    schedule 26.05.2015

Я столкнулся с таким же предупреждением и решил его, установив для параметра «Удалить символы отладки во время копирования» значение «НЕТ» в настройках сборки содержащего приложения (а не расширения), как вы знали.

С другой стороны, изменение той же настройки расширения не дало никакого эффекта. Это проясняет фактическое значение предупреждения. То есть удаление символа не означает, что символы «цели» будут чередоваться, но означает, что цель попытается удалить символы «встроенных двоичных файлов».

Следовательно, я считаю, что фактический смысл предупреждения будет заключаться в том, что Xcode не может удалить символы отладки двоичного файла расширения при архивировании приложения-контейнера, потому что двоичный файл расширения, который необходимо встроить в приложение-контейнер, «был» уже скомпилирован и заморожено путем подписания кода, прежде чем Xcode попытается удалить символы из двоичного файла расширения при архивировании приложения-контейнера.

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

person NeonBerry    schedule 13.01.2015
comment
Установка символов отладки во время копирования в значение «Нет» не приведет ли это к риску отправки символов отладки для некоторых компонентов приложения? - person pupeno; 30.03.2015

В моем случае это было связано с 2 AppIcons (я забыл их заполнить), проверьте, есть ли у вас все AppIcons в файле xxx.xcassets с правильным xxpt. Отсюда я прошу Apple улучшить эту проверку или включить автоинструмент для завершения всего набора AppIcons. Это безумие.

person Murolau Murolau    schedule 12.10.2015

Если вы используете Xcode 9.34.1, щелкните в настройках проекта. Используйте фильтр, чтобы найти правильную настройку: введите «strip debug». Вы найдете настройки COPY_PHASE_STRIP. Вероятно, установлено значение «Да». Установите «Нет», чтобы удалить предупреждение.

person Lorenzo    schedule 26.06.2018