После недавнего представления я получил следующую ошибку:
Недействительная подпись - вложенный пакет приложений (FooBar.app/Contents/Frameworks/GData.framework) не подписан, подпись недопустима или не подписана с сертификатом подачи Apple. Для получения дополнительной информации см. Руководство по песочнице ввода кода и приложения.
Недействительная подпись - вложенный пакет приложений (FooBar.app/Contents/Frameworks/Growl.framework) не подписан, подпись недопустима или не подписана с сертификатом подачи Apple. Для получения дополнительной информации см. Руководство по песочнице ввода кода и приложения.
Недействительная подпись - вложенный пакет приложений libcurl (FooBar.app/Contents/Frameworks/libcurl.framework) не подписан, подпись недопустима или не подписана с сертификатом подачи Apple. Для получения дополнительной информации см. Руководство по песочнице ввода кода и приложения.
Итак, я подписал все пакеты фреймов в 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 говорит:
Рамки подписи
Увидев, что фреймворки являются пакетами, логично сделать вывод о том, что вы можете подписывать структуру напрямую. Однако, это не так. Чтобы избежать проблем при подписании фреймворков, убедитесь, что вы подписываете определенную версию в отличие от всей структуры:
# Это неправильный путь:
codeign -s my-signature-identity../FooBarBaz.framework
# Правильный путь:
codeign -s my-signature-identity../FooBarBaz.framework/Версии/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?) или права - любые предложения?