2015-03-16 9 views
9

Wenn meine Anwendung Kompilieren ich die folgende Fehlermeldung erhalten:Wie beheben Sie "Code-Objekt ist überhaupt nicht in Sub-Komponente signiert:" in Xcode 6, Mac OS X Yosemite oder Mavericks?

CodeSign /Users/pupeno/Library/Developer/Xcode/DerivedData/ProjectX-cynmgyozflnwbpamwnpsnhgshuyq/Build/Products/Debug/Project\ X.app 
    cd /Users/pupeno/Projects/ProjectX 
    export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate 

Signing Identity:  "Mac Developer: José Fernández (G4PM7K38JH)" 

    /usr/bin/codesign --force --sign A21FB31766DDCBB28FBB4E4DD86E3743024A45F3 --entitlements /Users/pupeno/Library/Developer/Xcode/DerivedData/ProjectX-cynmgyozflnwbpamwnpsnhgshuyq/Build/Intermediates/ProjectX.build/Debug/App.build/Project\ X.app.xcent --requirements =designated\ =>\ anchor\ apple\ generic\ \ and\ identifier\ \"$self.identifier\"\ and\ ((cert\ leaf[field.1.2.840.113635.100.6.1.9]\ exists)\ or\ (\ certificate\ 1[field.1.2.840.113635.100.6.2.6]\ exists\ and\ certificate\ leaf[field.1.2.840.113635.100.6.1.13]\ exists\ \ and\ certificate\ leaf[subject.OU]\ =\ \"XHT4M2DATL\"\)) /Users/pupeno/Library/Developer/Xcode/DerivedData/ProjectX-cynmgyozflnwbpamwnpsnhgshuyq/Build/Products/Debug/Project\ X.app 

/Users/pupeno/Library/Developer/Xcode/DerivedData/ProjectX-cynmgyozflnwbpamwnpsnhgshuyq/Build/Products/Debug/Project X.app: code object is not signed at all 
In subcomponent: /Users/pupeno/Library/Developer/Xcode/DerivedData/ProjectX-cynmgyozflnwbpamwnpsnhgshuyq/Build/Products/Debug/Project X.app/Contents/Frameworks/Paddle.framework 
Command /usr/bin/codesign failed with exit code 1 

Ich bin mit zwei Gerüsten, Paddel und Sparkle und sie sind auf Kopie zu unterzeichnen konfiguriert:

enter image description here

Suche für eine Lösung dieses Problems habe ich viele Empfehlungen gefunden, um ein - Deep-Zeichen zu machen, das offiziell von Apple (Using the codesign Tool's --deep Option Correctly) entmutigt wird.

Ich fand auch den Artikel Code Signing and Mavericks, der auch erklärt, dass die Verwendung --deep ist falsch und bietet eine Alternative: Verwenden eines Skripts, um Signaturen für jedes Framework zu generieren. Ich denke, das war etwas, das benötigt wurde, bevor Xcode die Möglichkeit hatte, Kopien zu unterschreiben, aber ich habe es trotzdem versucht. Es machte keinen Unterschied, ich bekomme immer noch den gleichen Fehler. Wenn Sie sich die Logs ansehen, werden die Bundles mit der Option "Sign on copy" signiert. Wenn Sie also dieses Skript hinzufügen, werden sie doppelt signiert.

Meine Codesignaturidentität konfiguriert ist, als für das gesamte Projekt folgt und jedes Ziel es nur erbt:

enter image description here

Ich verstehe, das ist nicht die richtige Signatur für Release, aber jetzt sind wir nur versuchen, um dies lokal zu erstellen und auszuführen.

Irgendwelche Ideen, was ist los? Irgendwelche Ideen, wie man es repariert? Ich verstehe, dass

Antwort

9

Das Problem war, dass das Framework, Paddle.framework, beschädigt wurde. Die Symlinks wurden in die Dateien aufgelöst, auf die sie verwiesen wurden. Die Kompilierung funktionierte also gut, die Signierung jedoch nicht.

Das Framework erneut herunterladen und in das Projekt kopieren, behebt das Problem.

+1

DANKE. Nachdem dieses Problem 2 Tage lang angegangen wurde, neue Profile erstellt, mit Schlüsselbund und Signierfähnchen geplustet wurden und was nicht, war diese Lösung genau richtig. – Oskar

+0

Danke - ich hatte das gleiche Problem mit dem neuesten Xcode 8.2 - sobald ich PaddleMas entfernte - dann ging das Problem weg. Ich habe den Fehler erneut mit ihnen protokolliert. Das hat mich buchstäblich Tage der Frustration gekostet. (Mit Version 1.1.8) –

+0

Das Gleiche gilt für mich! Vielen Dank – iiFreeman

1

Ich lasse Mitgestaltung ist noch eine schwarze Kunst für mich, aber in Xcode 6 Ich fand, dass das Entfernen alle meiner Unterzeichnung Skripte (die in Xcode notwendig waren 5, zusammen mit --deep Flags) und Zusätzliche Signier-Flags, und nur mit der "codesign on copy" Option in der Copy Files Phase des Builds funktionierte für mich einwandfrei.

+0

Ich habe keine Skripte noch die - Deep-Flag und ich hatte immer das Zeichen auf Kopie Option ausgewählt. Ich kann sehen, dass die Frameworks signiert sind. Ich habe nur das Skript hinzugefügt, um diesen Blogpost zu humorvoll zu machen. – Pablo

0

Für mich stellte sich heraus, dass ich versehentlich ein Bash-Build-Skript zum Ziel hinzugefügt hatte. Sicherstellen, dass ich keine hinterhältigen Skripts hatte, die versehentlich in das Ziel kopiert wurden, behob das Problem.

2

Für mich bestand die Lösung darin, einen Ressourcenordner erneut hinzuzufügen (über das Kontrollkästchen Gruppen erstellen statt Ordnerreferenzen erstellen).