Nach einer kürzlich eingereichten Meldung habe ich folgenden Fehler erhalten:
Ungültige Signatur - Das verschachtelte App-Bundle (FooBar.app/Contents/Frameworks/GData.framework) ist nicht signiert, die Signatur ist ungültig oder es ist nicht mit einem Apple-Übermittlungszertifikat signiert. Weitere Informationen finden Sie im Code Signing and Application Sandboxing Guide.
Ungültige Signatur - Das verschachtelte App-Bundle (FooBar.app/Contents/Frameworks/Growl.framework) ist nicht signiert, die Signatur ist ungültig oder es ist nicht mit einem Apple-Übermittlungszertifikat signiert. Weitere Informationen finden Sie im Code Signing and Application Sandboxing Guide.
Ungültige Signatur - Das verschachtelte App-Bundle libcurl (FooBar.app/Contents/Frameworks/libcurl.framework) ist nicht signiert, die Signatur ist ungültig oder es ist nicht mit einem Apple-Übermittlungszertifikat signiert. Weitere Informationen finden Sie im Code Signing and Application Sandboxing Guide.
Also habe ich alle Framework-Bundles gemäß Technote 2206 signiert :
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 sagt:
Signing Frameworks
Da Frameworks Bundles sind, erscheint es logisch zu folgern, dass Sie ein Framework direkt signieren können. Dies ist jedoch nicht der Fall. Um Probleme beim Signieren von Frameworks zu vermeiden, stellen Sie sicher, dass Sie eine bestimmte Version im Gegensatz zum gesamten Framework signieren:
# Das ist der falsche Weg:
Codesign -s meine-Signatur-Identität ../FooBarBaz.framework
# Das ist der richtige Weg:
Codesign -s meine-Signatur-Identität ../FooBarBaz.framework/Versions/A
Und wenn ich versuche, die Ergebnisse zu überprüfen, sieht es für mich gut aus:
% 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
Zum Spaß habe ich versucht, das Framework-Bundle direkt zu signieren, und es wurde immer noch abgelehnt. Aber genau das soll die Dokumentation nicht tun.
Irgendwelche Vermutungen, warum das als ungültig angesehen wird? Ich verwende dasselbe Zertifikat, mit dem ich meine App mit einem Code signiere - das, das in der Vergangenheit funktioniert hat.
Meine einzige Vermutung wäre etwas mit den vorhandenen Plists (muss ich die Bezeichner in den Info.plists des Frameworks besitzen?) Oder Berechtigungen zu tun - irgendwelche Vorschläge?