2015-02-03 20 views
7

Xcode 6.1.1Xcode6-Codesignierung für referenzierte Frameworks erforderlich?

Wir versuchen, unsere App für den Vertrieb zu signieren (oder sogar nur auf physischen Geräten testen). Wir haben einen referenzierten Rahmen in unserem Projekt. Wir hatten den Eindruck, dass wir unsere App nur selbst signieren sollten (und wir haben alle Code-Signing-Identitäten, Bereitstellungsprofile usw.), aber wir sollten diesen externen Rahmen nicht unterzeichnen, da wir ihn nicht geschrieben haben. Es sollte seine Code-Signatur-Anmeldeinformationen aus dem übergeordneten Projekt abrufen.

Jedes Mal, wenn wir versuchen, auf einem physischen Gerät zu laufen, löst dieses referenzierte Framework jedoch einen Erstellungsfehler aus: "CodeSign-Fehler: Für den Produkttyp 'Framework' im SDK 'iOS 8.1' ist Codesignatur erforderlich."

Bedeutet das, dass wir das wirklich unterschreiben müssen?

Speziell das Framework, das wir verwenden möchten, ist Alamofire.

Antwort

4

Ich denke, es hängt davon ab, wo diese Rahmenbedingungen kommen aus:

  • Wenn sie Ihnen sind (das heißt interne Bibliothek, die Sie mit Ihrem Projekt sind die Bündelung), müssen Sie sie unterzeichnen.
  • Wenn sie von einem Open-Source-Projekt stammen, das Sie aus der Quelle erstellen (z. B. ein Pod von Cocoapods), müssen Sie sie unterschreiben.
  • Wenn sie von einem Drittanbieter-Entwickler stammen, sollten sie bereits signiert sein.

Es gibt aa Schritt "Embed Frameworks" unter "Build Phases" des Ziels genannt, wo Sie die Rahmen einbetten in Ihrem Paket enthalten und was zu Code Zeichen angeben:

Embed frameworks build phase

Es spielt keine Es ist egal, ob sie bereits eine Unterschrift haben: Ihre wird ersetzen, was auch immer da war.

xcrun codesign --verify --verbose [MYFramework.framework/MYFramework]

und drucken Sie das Singen Einheit mit:

xcrun codesign --display --verbose [MYFramework.framework/MYFramework]

+0

Mit Xcode 7 dieser doesn

Sie können jederzeit mit dem Codesign-Kommandozeilen-Tool das Zertifikat Status eines Rahmens überprüfen Es scheint nicht mehr zu funktionieren. Ich habe "Code Sign on Copy", aber das Framework bekommt keinen Code signiert. Das Seltsame ist, dass ich weiß, dass das Framework signiert wurde, weil ich den Code in einem separaten Projekt erstellt und mit meinem "iPhone Developer" -Zertifikat signiert habe. Außerdem, wenn ich meine App baue, gibt es eine Warnung: "Überspringen von Kopierphasenstreifen, Binärcode ist signiert". Also denkt jeder, dass es Code-signiert ist, aber wenn ich versuche, es in den App Store hochzuladen, beschwert es sich, dass das Framework NICHT mit Code signiert ist und die Binärdatei nicht akzeptiert. Catch-22, nicht sicher, was zu tun ist ... – Bungles

+0

Ich habe im Moment kein Problem mit Xcode 7. Das Framework muss mit dem gleichen Zertifikat wie die App signiert sein, ansonsten wird iTunes sich beschweren. Wenn Sie mehrere Zertifikate in Ihrem Schlüsselbund haben, wählt "iPhone Developer" manchmal verschiedene für verschiedene Projekte aus. – duhanebel

+0

Es scheint, dass Sie in XCode 8 keine dynamischen Frameworks signieren müssen, wenn Sie sie alleine verteilen möchten. Sie können sich also nur auf die endgültige Signatur während des gesamten App-Build-Prozesses verlassen. Aber ich habe gehört, dass es einige Probleme mit verschachtelten Frameworks gibt - sie könnten während der Kopierphase nicht signiert sein, und das ist ein Problem. – JustAMartin