Codesign API Dropbox не работает в Xcode 4.6.3: «Объект кода вообще не подписан»

У меня есть приложение OS X, которое распространяется через Mac App Store и недавно обновлено до Xcode 4.6.3.

Когда я запускаю свою регулярную сборку, я получаю:

Command /usr/bin/codesign failed with exit code 1: /Users/Craig/Library/Developer/Xcode/DerivedData/Mac-dxcgahgplwpbjedqnembegifbowj/Build/Products/Debug/MyApp.app: code object is not signed at all In subcomponent: /Users/Craig/Library/Developer/Xcode/DerivedData/Mac-dxcgahgplwpbjedqnembegifbowj/Build/Products/Debug/MyApp.app/Contents/Frameworks/DropboxOSX.framework Command /usr/bin/codesign failed with exit code 1 

Кажется, я не вижу каких-либо других изменений в моем проекте, поэтому я не могу сказать, является ли это проблемой, связанной с обновлением 4.6.3, или чем-то еще.

Я попытался перезапустить Xcode, запустить чистую сборку и очистить папку сборки.

Кажется, я понял это. Я запускал Xcode 4.6.3 на OS X Mavericks под впечатлением того, что в приложении Xcode были добавлены любые инструменты для сборки.

Но, похоже, codesign в /usr/bin . Независимо от того, установлен ли он одним из установщиков Xcode или поставляется с установкой ванильной системы, я не уверен. Но, прочитав man страницу для codesign , я нашел этот отличный вариант:

 --deep When signing a bundle, specifies that nested code content such as helpers, frameworks, and plug-ins, should be recursively signed in turn. Beware that all signing options you specify will apply, in turn, to such nested content. When verifying a bundle, specifies that any nested code content will be recursively verified as to its full content. By default, verification of nested content is limited to a shallow investigation that may not detect changes to the nested code. When displaying a signature, specifies that a list of directly nested code should be written to the display output. This lists only code directly nested within the subject; anything nested indirectly will require recursive application of the codesign command. 

И затем я нашел этот пост ( https://alpha.app.net/isaiah/post/6774960 ) с двух недель назад (~ июнь 2013 года), в котором упоминается (хотя и в обороте):

@isaiah Я спросил у парня в лаборатории об этом. Он сказал, что для кодового кода теперь требуется, чтобы встроенные фреймворки подписывались отдельно до того, как кодекс подписал пакет приложений в целом.

Вручную повторно запустите команду codesign которую обычно запускает Xcode, добавив флаг --deep в конец, правильно подпишите приложение.

Я еще не уверен, какие последствия имеет эта подпись для написания вручную, или я могу настроить сборку Xcode, чтобы автоматически добавить флаг --deep , но это, по-видимому, является основной проблемой. ( codesign больше не автоматически глубоко подписывает ваш пакет приложений.)

Как указано в других ответах, происходит изменение способа подписания кода. Если вы установили любой из Xcode 5 DP, тогда новые инструменты будут использоваться, даже если вы используете Xcode 4.6.X.

Все, что вам нужно сделать на этом этапе (в Xcode 4.6.X), принять флаг -deep, предложенный выше, и добавить его в свои флаги подписи кода (Target, Build Settings), см. Изображение ниже.

Определение глубокой подписи встроенных платформ

Для меня эта проблема возникла после перетаскивания папки с именем «resources» в моем проекте. После изменения имени на что-либо еще (например, «resourcessss») ошибка исчезла.

У меня была та же проблема, но ответ был прост: идентификатор подписи кода в моем приложении был настроен на «-», поэтому просто установка этого параметра на «Do not Code Sign» исправила меня.

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

Это может помочь кому-то:

Я, наконец, понял решение путем проб и ошибок. В моем случае у меня было имя папки, которое соответствовало переменной «Имя продукта» в настройках сборки. Это также соответствует всему названию проекта! Поэтому я просто изменил одно поле. Я изменил «Настройки сборки» -> «Название продукта». Значение MySpecialApp было изменено на My-SpecialApp. Это было просто! Затем я зашел в портал разработчиков Apple и создал новые идентификаторы приложений и мобильных профилей для разработки и распространения, а остальное – история. Мои выпуски теперь работают при развертывании через Ad Hoc-дистрибутив. Заключительная записка об этом. Это определенно ошибка, которую Apple должна либо предупредить пользователя о том, что они сделали что-то неправильно, и активировать какие-то автоматические корректирующие действия. – См. Больше на: http://www.chrisdanielson.com/2012/08/29/codesign-ipa-and-the-code-object-is-not-signed-at-all-problem/#sthash.F0nF3BbC. dpuf

Для меня это был поврежденный Framework PaddleMAs, который: 1. Я удалил из своего файла Cocoapods 2. Ran pod install 3. Перезагрузил мой Xcode

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

  • «CompanyName.Foo» - это «пространство имен», но используется как «тип»,
  • Отключение автоматического форматирования в Visual Studio
  • Ошибка кодового знака: профиль Provisioning не найден.
  • В чем разница между собственным кодом, машинным кодом и кодом сборки?
  • Завершение кода PHP NetBeans
  • Когда можно использовать обработку исключений для бизнес-логики?
  • «Взаимодействие с пользователем не разрешено», пытаясь подписать приложение OSX с использованием кода
  • Как испускать и выполнять байт-код Java во время выполнения?
  • Как определить неиспользуемые определения css
  • Проверка указателя NULL в C / C ++
  • Отладчик Visual Studio - отображение целочисленных значений в шестнадцатеричном виде
  • Давайте будем гением компьютера.