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, или чем-то еще.
- Форматирование ReSharper: выравнивание равных операндов
- Что означает == $ 0 (double equals dollar zero) в инструментах разработчика Chrome?
- Форматирование Литеральные параметры fragmentа кода C #
- Покрытие кода, не показывающее результаты с помощью Xcode + gcov
- Файлы заголовков C ++, разделение кода
Я попытался перезапустить Xcode, запустить чистую сборку и очистить папку сборки.
- Генерировать различные случайные числа в C #
- Можете ли вы создавать представления sql / хранимую процедуру с использованием Entity Framework 4.1 Первый подход к коду
- Подписывание ароматов продуктов с gradleиентом
- Как я могу тестировать графический интерфейс?
- Не удается получить доступ к родительским элементам при работе с аннотациями макросов
- Как получить «кодовое обозначение» gdb на OSX?
- Когда использовать утверждение и когда использовать исключение
- Код C ++ в файлах заголовков
Кажется, я понял это. Я запускал 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, чтобы исправить.