После недавнего представления я получил следующее сообщение об ошибке:Как вы кодируете пакеты с интерфейсом для Mac App Store?
Invalid Signature - the nested app bundle (FooBar.app/Contents/Frameworks/GData.framework) is not signed, the signature is invalid, or it is not signed with an Apple submission certificate. Refer to the Code Signing and Application Sandboxing Guide for more information.
Invalid Signature - the nested app bundle (FooBar.app/Contents/Frameworks/Growl.framework) is not signed, the signature is invalid, or it is not signed with an Apple submission certificate. Refer to the Code Signing and Application Sandboxing Guide for more information.
Invalid Signature - the nested app bundle libcurl (FooBar.app/Contents/Frameworks/libcurl.framework) is not signed, the signature is invalid, or it is not signed with an Apple submission certificate. Refer to the Code Signing and Application Sandboxing Guide for more information.
Так что я подписал все рамочные пакеты на Technote 2206:
codesign -f -v -s "3rd Party Mac Developer Application: Name" ./libcurl.framework/Versions/A/libcurl
codesign -f -v -s "3rd Party Mac Developer Application: Name" ./libcurl.framework/Versions/A/libssh2.1.dylib
codesign -f -v -s "3rd Party Mac Developer Application: Name" ./Growl.framework/Versions/A/Growl
codesign -f -v -s "3rd Party Mac Developer Application: Name" ./GData.framework/Versions/A/GData
Technote 2206 говорит:
Signing Frameworks
Seeing as frameworks are bundles it would seem logical to conclude that you can sign a framework directly. However, this is not the case. To avoid problems when signing frameworks make sure that you sign a specific version as opposed to the whole framework:
# This is the wrong way:
codesign -s my-signing-identity ../FooBarBaz.framework
# This is the right way:
codesign -s my-signing-identity ../FooBarBaz.framework/Versions/A
И когда Я пытаюсь проверить результаты, это выглядит хорошо для меня:
% codesign -vvv FooBar.app/Contents/Frameworks/libcurl.framework
FooBar.app/Contents/Frameworks/libcurl.framework: valid on disk
FooBar.app/Contents/Frameworks/libcurl.framework: satisfies its Designated Requirement
% codesign -vvv FooBar.app/Contents/Frameworks/Growl.framework
FooBar.app/Contents/Frameworks/Growl.framework: valid on disk
FooBar.app/Contents/Frameworks/Growl.framework: satisfies its Designated Requirement
Для удовольствия я попытался сразу же подписать пакет рамки, и он все еще был отклонен. Но это именно то, что сказано в документации.
Любые догадки, почему это считается недействительным? Я использую тот же сертификат, который я использую для кодового обозначения моего приложения - того, который работал в прошлом.
Мое единственное предположение - это что-то связанное с существующими plists (нужно ли мне иметь идентификаторы в Info.plists?) Или права - любые предложения?
я и узнал об этом раньше, когда я представил мое приложение. К счастью, Apple не отвергла его, но отметила, что нам придется подписать рамки позже.Я думаю, что лучше размещать на странице проблем с кодом Google Growl, и очень скоро люди собираются столкнуться с одной и той же проблемой. – koo
Также столкнулась с этой проблемой при представлении приложения с рамкой Growl. Я предполагаю, что вам придется изменить идентификатор пакета growl.framework на свой собственный, а затем закодировать его. – Andrew
Это странно: я опубликовал приложение, которое включает в себя две структуры (CorePlot и MacRuby), обе без знака. Я только один раз запускаю команду знака кода в комплекте приложения, и приложение было принято без каких-либо комментариев в фреймворке. Теперь, если вы посмотрите в комплекте приложений (http://bit.ly/charterapp), обе структуры будут подписаны. Вы пытались просто подписать все приложение? – p4010