Как разработать Growl.framework для приложения Mac с песочницей - PullRequest
4 голосов
/ 28 февраля 2012

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

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

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

Ответы [ 4 ]

3 голосов
/ 03 апреля 2012

Действительно странно, мне удалось оставить структуру следующим образом:

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

(Кстати: я работаю с Xcode 4.3.1 и Growl 1.3.1)

2 голосов
/ 09 августа 2013

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

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

Это обсуждается далее здесь: Как вы кодируете комплекты фреймворков для Mac App Store?

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

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

  • Убедитесь, что вы используете правильную версию CODESIGN_ALLOCATE. Это обсуждается во многих ответах здесь: Недопустимый или неподходящий формат файла объекта iPhone Codesign Если вы можете заставить XCode подписать приложение, то вы можете найти путь CODESIGN_ALLOCATE в журнале сборки.

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

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

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

1 голос
/ 22 июля 2014

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

0 голосов
/ 28 февраля 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...