Yakın zamanda yapılan bir gönderimden sonra aşağıdaki hatayı aldım:
Geçersiz İmza - yuvalanmış uygulama paketi (FooBar.app/Contents/Frameworks/GData.framework) imzalanmamış, imza geçersiz veya Apple gönderim sertifikası ile imzalanmamış. Daha fazla bilgi için Kod İmzalama ve Uygulama Korumalı Alan Kılavuzu'na bakın.
Geçersiz İmza - yuvalanmış uygulama paketi (FooBar.app/Contents/Frameworks/Growl.framework) imzalanmamış, imza geçersiz veya bir Apple gönderim sertifikasıyla imzalanmamış. Daha fazla bilgi için Kod İmzalama ve Uygulama Korumalı Alan Kılavuzu'na bakın.
Geçersiz İmza - yuvalanmış uygulama paketi libcurl (FooBar.app/Contents/Frameworks/libcurl.framework) imzalanmamış, imza geçersiz veya bir Apple gönderim sertifikasıyla imzalanmamış. Daha fazla bilgi için Kod İmzalama ve Uygulama Korumalı Alan Kılavuzu'na bakın.
Bu yüzden Technote 2206'ya göre tüm çerçeve paketlerini imzaladım :
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 diyor ki:
Çerçeveleri İmzalama
Çerçeveler demetler olarak görüldüğünde, bir çerçeveyi doğrudan imzalayabileceğiniz sonucuna varmak mantıklı görünebilir. Ancak durum bu değil. Çerçeveleri imzalarken sorunlardan kaçınmak için, tüm çerçevenin aksine belirli bir sürümü imzaladığınızdan emin olun:
# Bu yanlış yoldur:
codeign -s benim-imzalama-kimliğim ../FooBarBaz.framework
# Bu doğru yoldur:
codeign -s benim-imzam-kimliğim ../FooBarBaz.framework/Versions/A
Ve sonuçları doğrulamaya çalıştığımda, bana iyi görünüyor:
% 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
Eğlence için, çerçeve paketini doğrudan imzalamayı denedim ve yine de reddedildi. Ancak bu, belgelerin yapmamayı söylediği şeydi.
Bunun neden geçersiz sayılacağına dair herhangi bir tahmin var mı? Uygulamamı kod imzalamak için kullandığım sertifikanın aynısını kullanıyorum - geçmişte işe yaramış olan.
Tek tahminim mevcut plistlerle (çerçevenin Info.plists içindeki tanımlayıcılara sahip olmam gerekir mi?) Veya yetkilerle ilgili bir şey olabilir mi - herhangi bir öneri?