Wie signieren Sie Framework-Bundles für den Mac App Store?

Nach einer letzten Vorlage habe ich bekommen die folgende Fehlermeldung:

Ungültige Signatur - das verschachtelte app-bundle (FooBar.app/Contents/Frameworks/GData.Rahmen) ist nicht signiert, die Signatur ist ungültig, oder es ist nicht signiert mit einer Apple-Vorlage Zertifikat. Siehe das Code Signing-und Anwendungs-Sandboxing-Handbuch für weitere Informationen.

Ungültige Signatur - das verschachtelte app-bundle (FooBar.app/Contents/Frameworks/Knurren.Rahmen) ist nicht signiert, die Signatur ist ungültig, oder es ist nicht signiert mit einer Apple-Vorlage Zertifikat. Siehe das Code Signing-und Anwendungs-Sandboxing-Handbuch für weitere Informationen.

Ungültige Signatur - das verschachtelte app-bundle libcurl (FooBar.app/Contents/Frameworks/libcurl.Rahmen) ist nicht signiert, die Signatur ist ungültig, oder es ist nicht signiert mit einer Apple-Vorlage Zertifikat. Siehe das Code Signing-und Anwendungs-Sandboxing-Handbuch für weitere Informationen.

Also unterschrieb ich alle framework-bundles pro 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 sagt:

Unterzeichnung Frameworks

Sehen, wie die Rahmenbedingungen sind, bündelt es scheint logisch zu dem Schluss, dass Sie können melden Sie einen Rahmen direkt. Dies ist jedoch nicht der Fall. Um Probleme zu vermeiden, wenn die Unterzeichnung der frameworks stellen Sie sicher, dass Sie Schild von einer bestimmten version, im Gegensatz zu den ganzen Rahmen:

# Dies ist der falsche Weg:

codesign -s-meine-Signatur-Identität ../FooBarBaz.Rahmen

# Dies ist der richtige Weg:

codesign -s-meine-Signatur-Identität ../FooBarBaz.framework/versions/A

Und wenn ich versuche, die Resultate zu überprüfen, es sieht gut aus für mich:

% 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

For fun, ich habe versucht, die Unterzeichnung des framework-bundle direkt und es wurde immer noch abgelehnt. Aber genau das ist es, was die Dokumentation sagt nicht zu tun.

Vermutungen, warum das ungültig? Ich bin mit dem gleichen cert, die ich verwenden, um den code signieren meiner app-eine, die hat in der Vergangenheit gearbeitet.

Meine einzige Vermutung wäre, etwas zu tun mit den bestehenden plists (muss ich über die IDS im Rahmen der Info.plists?) oder Anwartschaften-irgendwelche Vorschläge?

InformationsquelleAutor der Frage csexton | 2011-10-08

Schreibe einen Kommentar