У меня возникли проблемы с подписями приложения на основе Qt без OS X. Я использую Qt 5.3.2.Невозможно подписать приложение с использованием фреймворков Qt на OS X 10.10
Я читал различные источники информации, содержащие противоречивую информацию.
Вот содержание моего пакета приложения после того, как я запустить утилиту bin/macdeployqt
Qt
SimpleHello.app/
Contents/
Info.plist
PkgInfo
Frameworks/
QtCore.framework/
Resources/
Versions/
5/
QtCore
QtGui.framework/ ... same as Qt core
QtPrintSupport.framework/ ... same as Qt core
QtWidgets.framework/ ... same as Qt core
MacOS/
SimpleHello
PlugIns/ ... some plugins
Resources/
empty.lproj
qt.conf
Первое:
Я пробовал: http://successfulsoftware.net/2012/08/30/how-to-sign-your-mac-os-x-app-for-gatekeeper/
Тем не менее, кажется, что это не так действителен в OS X 10.10 Yosemite
Во-вторых:
Я пробовал: Sign a Framework for OSX 10.9
Я был в состоянии подписать все приложения без каких-либо ошибок. Тем не менее, при выполнении spctl
для проверки обоснованности применения, я получаю
spctl -a -vvvv SimpleHello.app
SimpleHello.app/: rejected
source=obsolete resource envelope
origin=Developer ID Application: MY CERTIFICATE
Кроме того при проверке подписи с CodeSign, я получаю это:
codesign --verify --deep --verbose=4 SimpleHello.app
--prepared:/My/Path/SimpleHello.app/Contents/Frameworks/QtCore.framework
--validated:/My/Path/SimpleHello.app/Contents/Frameworks/QtCore.framework
SimpleHello.app/: embedded framework contains modified or invalid version
In subcomponent: /My/Path/SimpleHello.app/Contents/Frameworks/QtCore.framework
Третье:
добавившие --no-strict
опция в отношении кодов в соответствии с: Error when export archive
Он исправляет проблему с проверкой кода, но не исправляет проблему spctl
.
Forth:
Я попытался добавить опцию --no-legacy-signing
при подписании рамок. Однако я получаю эту ошибку при проверке пучка подписи (как с codesign
и spctl
codesign --verify --deep --verbose=4 SimpleHello.app
SimpleHello.app/: code has no resources but signature indicates they must be present
Пятое:
Модифицированный каркасную структуру в соответствии с: http://qt-project.org/forums/viewthread/47768 и https://gist.github.com/kingcheez/6154462d7734e0c0f3a4
В этом случае я получаю эту ошибку при попытке подписать рамки
SimpleHello.app/Contents/Frameworks/QtCore.framework: unsealed contents present in the root directory of an embedded framework
SimpleHello.app/Contents/Frameworks/QtGui.framework: unsealed contents present in the root directory of an embedded framework
SimpleHello.app/Contents/Frameworks/QtPrintSupport.framework: unsealed contents present in the root directory of an embedded framework
SimpleHello.app/Contents/Frameworks/QtWidgets.framework: unsealed contents present in the root directory of an embedded framework
EDIT: Кажется, проблема с unsealed contents present in the root directory of an embedded framework
состояла в том, что одна из симлинков была искажена.Это было:
QtCore.framework.framework/Versions/Current -> 5/
Вместо
QtCore.framework.framework/Versions/Current -> 5
После исправления, я все еще получаю тот же результат, как и в Шестой хотя.
Шестые:
Добавлена --no-strict
опции при вызове codesign
для рамочных. Я был в состоянии подписать все рамки, за исключением одного
SimpleHello.app//Contents/Frameworks/QtCore.framework: signed bundle with Mach-O thin (x86_64) [.]
SimpleHello.app//Contents/Frameworks/QtGui.framework: signed bundle with Mach-O thin (x86_64) [.]
SimpleHello.app//Contents/Frameworks/QtPrintSupport.framework: code object is not signed at all
In subcomponent: /My/Path/SimpleHello.app/Contents/Frameworks/QtPrintSupport.framework/Versions/Current/QtPrintSupport
SimpleHello.app//Contents/Frameworks/QtWidgets.framework: signed bundle with Mach-O thin (x86_64) [.]
Седьмое:
я отправил этот вопрос, так как я не знаю, что искать больше
Отличный человек! Наконец, рабочее решение. Не забудьте использовать cp -R, чтобы скопировать приложение в возможные скрипты, иначе сигнатура будет нарушена. – Indio