Codesign: Что такое распечатанное содержимое?
Я только что обновился до XCode 6 и попытался создать приложение для Mac, подписанное разработчиком.
Однако теперь я получаю следующую ошибку кода:
unsealed contents present in the root directory of an embedded framework
Это относится к Dropbox.framework
, который я использую. Очевидно, что это невозможно было подписать. Что означает ошибка? Что не так?
Ответы
Ответ 1
Посмотрите OS X Code Signing In Depth
Начиная с OS X версии 10.9.5, будут изменения в том, как OS X распознает подписанные приложения
Структура вашего пакета в соответствии с ожиданиями для OS X версии 10.9 или новее:
- Включать только подписанный код в каталогах, которые должны содержать подписанные
код.
- Включать только ресурсы в каталогах, которые должны содержать
ресурсы.
- Не используйте флаг -resource-rules или ResourceRules.plist. Oни
были устарели и будут отклонены.
Ответ 2
Проблема заключается в файле version.txt
, который находится в Dropbox.framework
. Хотя это полезно для того, чтобы узнать, какая версия является фреймворком, кажется, что больше не подходит для кодовой кодировки.
Когда я удалил файл, все снова работало нормально.
Ответ 3
У нас была такая же проблема в течение нескольких часов, поскольку я попытался адаптировать до Йосемити пакет .framework для Yosemite. В конце концов, проблема заключалась в символических ссылках, которые я сделал, а не только в файлах в каталоге.
Первоначально пакет имел сломанную символическую ссылку в корневом каталоге. Я исправил его.
Симлинк я добавил:
Headers -> Versions/Current/Headers/
Что нужно:
Headers -> Versions/Current/Headers
Эта косая черта - это убийца.
Обратите внимание, что это бит меня дважды в двух разных местах: у меня также был
Current -> 1.8.0/
где мне нужно
Current -> 1.8.0
Я не очень люблю * nixer, поэтому, возможно, это здравый смысл, но, надеюсь, он помогает другим разработчикам окон, как я.
Ответ 4
Сегодня я столкнулся с подобной проблемой... моя ошибка была "незапечатанным содержимым, присутствующим в корневом пакете". Исправить для меня было удалить пользовательский значок, который у меня был в моем приложении. AppName.app/Icon? был каким-то образом испорчен...
Ответ 5
Я исследовал это некоторое время сегодня, и ни одно из предложений, которые я нашел, не помогло, моя sdl_mixer.framework имела пять встроенных фреймворков, которые я не мог пройти через iTunesConnect. Мои решения заключались в том, чтобы удалить три из них, которые мне действительно не нужны, а два других были добавлены в мой проект как автономные рамки, а не встроены в sdl_mixer. Надеюсь, это помогает кому-то, я потратил на это несколько часов.
Ответ 6
Я дважды ударил это дважды, поэтому добавляю причины, поскольку код очень непрозрачен и обычно отказывается сообщать вам, что представляет собой проблемный ресурс.
В одном случае у меня был бинарный исполняемый файл без знака. Каждый исполняемый файл и фреймворк должны быть индивидуально подписаны перед тем, как попеть пакет в целом.
Затем я попал в другой случай. Я подписываю свой код как часть процесса публикации, переписывая каждый исполняемый файл и фреймворк. Но Xcode также подписывает пакет, и оказывается, что он уходил из-за папок _CodeSignature. Итак, перед подписанием каждого из исполняемых файлов и фреймворков, а затем пакета, я предварительно удаляю Xcode сгенерированные папки _CodeSignature с чем-то вроде:
find MyApp.app -name _CodeSignature -type d -exec rm -rf {} +
Надеюсь, эта информация, полученная с трудом, спасет кого-то в один прекрасный день.
Ответ 7
У меня была такая же проблема, и для работы было удаление содержимого папки DerivedData. Xcode не говорит, какой ресурс вызывает проблему, поэтому я перестроил все с нуля. Чистота тоже не работала.
Ответ 8
В моем случае я пытался подписать приложение с некоторыми старыми фреймворками внутри. Ни одно из этих предложений не помогло. Оказалось, что мне пришлось удалить файл PkgInfo изнутри рамки, чтобы убрать это сообщение.