Після нещодавнього подання я отримав таку помилку:
Недійсний підпис - вкладений пакет програм (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
Технота 2206 говорить:
Рамки підписання
Вважаючи, що фреймворки - це пучки, логічно було б зробити висновок, що ви можете підписати фреймворк безпосередньо. Однак це не так. Щоб уникнути проблем підписання фреймворків, переконайтеся, що ви підписали певну версію на відміну від цілої фреймворку:
# Це неправильний шлях:
кодовий дизайн-ідентичність мого підписання ../FooBarBaz.framework
# Це правильний шлях:
кодовий знак -s моя-підпис-ідентичність ../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
Для розваги я спробував підписати пакет фреймворку безпосередньо, і його все одно відхилили. Але це саме те, що в документації сказано не робити.
Будь-яка здогадка, чому це вважатиметься недійсним? Я використовую той самий сертифікат, який використовую для кодування підпису свого додатка - той, що працював у минулому.
Моє єдине припущення - щось пов’язане з існуючими списками (чи потрібно мені володіти ідентифікаторами в Info.plists фреймворку?) Або правами - будь-які пропозиції?