2012-02-28 3 views
4

Я пытаюсь отправить приложение Mac для утверждения в App Store, но ссылка на Growl вызывает ошибку проверки. Я пытаюсь повторно CodeSign из командной строки, но я получаю следующее сообщение об ошибке:Как Codesign Growl.framework для Sandboxed Mac App

Ashs-MacBook-Pro:500px Uploader ash$ codesign -f -v -s "3rd Party Mac Developer Application: 500px Inc." ./Growl.framework/Versions/A 
./Growl.framework/Versions/A: replacing existing signature 
./Growl.framework/Versions/A: object file format unrecognized, invalid, or unsuitable 

Я попытался повторно загружать рамки, но не повезло. Кто-нибудь видит, что я делаю неправильно?

ответ

3

Действительно странно, что мне удалось уйти в отставку структуры, как это:

codesign -fs "3rd Party Mac Developer Application: Future Simple" Growl.framework/Versions/A/Growl 
Growl.framework/Versions/A/Growl: replacing existing signature 

(BTW: Я работаю с Xcode 4.3.1 и Growl 1.3.1)

+0

Мне удалось решить эту проблему, экспортировав мой сертификат и запустив код на компьютере коллеги. Должно быть, это была проблема с моей брелка. –

0

Похоже, что ошибка, возможно, пыталась подписать пакет, который уже был подписан; Я исправил проблему, загрузив исходный код Growl и скомпилировав его с помощью своей собственной подписи.

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

2

Я просто провел день, работающий с ошибкой «непринужденный, недействительный или неподходящий» формат пакета, когда кодовое обозначение фреймворка. В моем случае я использую XCode 4.6.1, и я пытался кодировать знаковые рамки Qt.

Прежде всего обратите внимание, что документация Apple (TN2206) явно указывает, что вам нужно закодировать код каталога с версией фрейма, а не исполняемый файл библиотеки.

Это обсуждается здесь: How do you codesign framework bundles for the Mac App Store?

Таким образом, основываясь на том, что командная строка в исходный вопрос Эша правильно. Однако я получал ту же ошибку.

Я получил работу с этой командной строкой. Вот что я должен был сделать:

  • Убедитесь, что вы используете правильную версию CODESIGN_ALLOCATE. Это обсуждается во многих ответах здесь: iPhone Codesign object file format invalid or unsuitable Если вы можете заставить XCode подписывать приложение, вы можете найти путь CODESIGN_ALLOCATE в журнале сборки.

  • Убедитесь, что каталог с версией (./Growl.framework/Versions/A в вопросе выше) содержит ресурсы/Info.plist и что существует ссылка из версий/Current -> Versions/A и что там это ссылка Ресурсы -> Версии/Текущие/Ресурсы на верхнем уровне пакета фреймов. Я обнаружил, что я не могу подписать каталог с версией фрейма без присутствия Versions/A/Resources/Info.plist. Вы можете больше узнать о правильной структуре фреймворка here и here или просто взглянуть на некоторые системные рамки, чтобы понять, как они должны быть структурированы.

  • В дополнение к предыдущему пункту убедитесь, что ваши символические ссылки в вашем пакете структуры структурированы правильно (Текущие ссылки на нумерованную версию, ссылки верхнего уровня на текущий), как показано на рисунке in the Apple docs. Это не повлияет на подписание кода, но ваше приложение будет отклонено, если вы не получите это право.

  • Убедитесь, что CFBundleExecutable установлен в правильное имя (исполняемое имя) в Info вашей инфраструктуры.plist

1

Было бы лучше, если бы мы отправили sdk без знака? Это было бы простое изменение, я не решаюсь сделать это сейчас, так как это было так вот немного.