76 votes

Les codes de l'API Dropbox échouent dans Xcode 4.6.3: "l'objet de code n'est pas signé du tout"

J'ai une application OS X distribuée via le Mac App Store et récemment mise à jour vers Xcode 4.6.3.

Quand je lance ma compilation régulière maintenant, je reçois:

 Command /usr/bin/codesign failed with exit code 1:

/Users/Craig/Library/Developer/Xcode/DerivedData/Mac-dxcgahgplwpbjedqnembegifbowj/Build/Products/Debug/MyApp.app: code object is not signed at all
In subcomponent: /Users/Craig/Library/Developer/Xcode/DerivedData/Mac-dxcgahgplwpbjedqnembegifbowj/Build/Products/Debug/MyApp.app/Contents/Frameworks/DropboxOSX.framework
Command /usr/bin/codesign failed with exit code 1
 

Je n'arrive pas à discerner d'autres modifications dans mon projet. Je ne peux donc pas dire s'il s'agit d'un problème lié à la mise à jour 4.6.3, ou de quelque chose d'autre.

J'ai essayé de redémarrer Xcode, d'exécuter une nouvelle génération et de nettoyer le dossier de génération.

140voto

Craig Otis Points 5399

Je crois que j'ai compris cela. J'ai été en cours d'exécution Xcode 4.6.3 sur OS X Mavericks, en vertu de l'impression que de construire des outils spécifiques ont été regroupés dans l'application Xcode.

Mais, il semble que codesign est /usr/bin. Si c'est mis en place par l'un des Xcode installateurs ou est livré avec une vanille d'installation du système, je ne suis pas sûr. Mais la lecture par le biais de l' man page codesign, j'ai trouvé cette chouette option:

--deep  When signing a bundle, specifies that nested code content such as helpers, frameworks, and plug-ins, should be recursively signed
             in turn. Beware that all signing options you specify will apply, in turn, to such nested content.
             When verifying a bundle, specifies that any nested code content will be recursively verified as to its full content. By default,
             verification of nested content is limited to a shallow investigation that may not detect changes to the nested code.
             When displaying a signature, specifies that a list of directly nested code should be written to the display output. This lists only
             code directly nested within the subject; anything nested indirectly will require recursive application of the codesign command.

Et puis j'ai trouvé ce post (https://alpha.app.net/isaiah/post/6774960) d'il y a deux semaines (~juin 2013), qui mentionne (quoique seconde main):

@ésaïe j'ai demandé à un gars dans les laboratoires à ce sujet. Il a dit codesign maintenant nécessite intégré cadres à être signé séparément avant de les code la signature de l'app bundle dans son ensemble.

De nouveau manuellement l'exécution de l' codesign commande Xcode s'exécute normalement, tout en ajoutant l' --deep drapeau à la fin, les signes correctement l'application.

Je ne suis pas encore sûr exactement ce ramifications de ce manuel de signature a, ou si je peux modifier le Xcode construire pour ajouter l' --deep drapeau automatiquement, mais cela semble être le problème sous-jacent. (codesign n'est plus automatiquement profondément signes que votre app bundle.)

68voto

rougeExciter Points 1253

Comme cela a été souligné dans d'autres réponses, la façon dont la signature du code fonctionne fonctionne. Si vous avez installé l'un des DP de Xcode 5, les nouveaux outils seront utilisés même si vous utilisez Xcode 4.6.X.

Tout ce que vous devez faire à ce stade (dans Xcode 4.6.X) est de prendre l’indicateur --deep suggéré ci-dessus et de l’ajouter à vos indicateurs de signature de code (cible, paramètres de construction), voir image ci-dessous.

Spécification de la signature en profondeur de cadres intégrés

7voto

Jerry Tian Points 1169

Ce blog explique beaucoup de détails sur ce problème. Le mérite revient à son auteur. Aucune des anciennes réponses ne peut fonctionner à la fois dans les versions debug et release (pour App Store), et cet article explique la raison derrière ce problème, avec une solution.

http://furbo.org/2013/10/17/code-signing-and-mavericks/

4voto

Maury Markowitz Points 532

J'avais le même problème, mais la réponse était simple: l'identité de la signature de code sur mon application était définie sur "-", donc le paramètre "Ne pas signer par le code" m'a tout simplement corrigé.

"-" semble être le paramètre par défaut lorsque vous effectuez une série d’actions, bien que je ne puisse pas vous dire quelles sont ces actions.

2voto

Thomas Points 2676

Cela peut aider à la somone:

J'ai enfin trouvé la solution par essai et erreur. Dans mon cas, j'ai eu un nom de dossier qui correspond au "Nom du Produit" variable sous paramètres de construction. Cette correspondance de l'ensemble du projet de nom de! Alors j'ai tout simplement changé d'un champ. J'ai changé le "Build Settings" -> "Nom du Produit" . La valeur de MySpecialApp a été changé à Mon-SpecialApp. Ce n'était tout simplement! J'ai ensuite ouvert une session dans le portail des développeurs d'Apple et a créé une nouvelle ID de l'Application mobile et les profils de configuration pour le développement et la distribution, et le reste est l'histoire. Mes sorties maintenant travailler lorsqu'il est déployé via la distribution Ad Hoc. Une dernière remarque sur ce point. C'est vraiment un bug que Apple devrait alerter l'utilisateur qu'ils ont fait quelque chose de mal et de permettre à certains de tri automatisé des mesures correctives. - Voyez plus à: http://www.chrisdanielson.com/2012/08/29/codesign-ipa-and-the-code-object-is-not-signed-at-all-problem/#sthash.F0nF3BbC.dpuf

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X