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 ответов:
Я думаю,что я, возможно, понял это. Я запускал 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, предложенный выше, и добавьте его в свои флаги подписи кода (цель, настройки сборки) см. изображение ниже.
для меня эта проблема была вызвана после перетаскивания в папку "ресурсы" в моем проекте. После изменения его имени на что-нибудь еще(например, "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, чтобы исправить.