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

Я получил это предупреждение, когда добавил расширение для моего проекта и архивировал его предупреждение: пропустить скопированную фазовую полосу, двоичный код подписан:/Пользователи/xxxx/xxx/xxxx/Build/xxxx/Build/Intermediates/ArchiveIntermediates/xxxx/IntermediateBui ldFilesPath/UninstalledProducts/XXX.appex/XXXX

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

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

Я знал, что установка "Отладка отладочных символов во время копирования" на "НЕТ" может очистить это предупреждение. Но на самом деле это не проблема. И в чем заключается недостаток не "снятия символа отладки"? Поскольку размер моего архива по-прежнему остается неизменным, устанавливаю ли это значение YES или NO

Ответ 1

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

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

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

Ответ 2

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

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

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

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

Ответ 3

Я испытал такое же предупреждение и решил его, установив "Strip Debug Symbols When Copy" на "NO" в настройках сборки содержащего приложения (а не расширения), как вы знали.

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

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

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

Ответ 4

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