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, запустить чистую сборку и очистить папку сборки.

6 75

6 ответов:

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

но, кажется codesign находится в /usr/bin. Независимо от того, установлен ли он одним из установщиков Xcode или поставляется с установкой системы vanilla, я не уверен. Но чтение через 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.Х.

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

Specifying Deep Signing of Embedded Frameworks

для меня эта проблема была вызвана после перетаскивания в папку "ресурсы" в моем проекте. После изменения его имени на что-нибудь еще(например, "resourcessss"), ошибка исчезла.

У меня была та же проблема, но ответ был прост: идентификатор подписи кода в моем приложении был установлен на "-", Поэтому просто установите, чтобы "не подписывать код" исправил меня.

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

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

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

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

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