Codesign of Dropbox API échoue dans Xcode 4.6.3: «l’object code n’est pas signé du tout»

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

Quand je lance ma construction 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 changements dans mon projet, donc je ne peux pas dire s’il s’agit d’un problème lié à la mise à jour 4.6.3, ou à autre chose.

J’ai essayé de redémarrer Xcode, de lancer une version propre et de nettoyer le dossier de génération.

Je pense que je l’ai peut-être compris. J’ai exécuté Xcode 4.6.3 sur OS X Mavericks, avec l’impression que tous les outils spécifiques à la compilation étaient intégrés à l’application Xcode.

Mais, il semble que codesign trouve dans /usr/bin . Que ce soit mis en place par l’un des installateurs Xcode ou livré avec une installation système vanilla, je n’en suis pas certain. Mais en parcourant la page de manuel de codesign , j’ai trouvé cette option intéressante:

 --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 de manière indirecte):

@isaiah j’ai demandé à un gars dans les laboratoires à ce sujet. Il a déclaré que codesign exige désormais que les frameworks intégrés soient signés séparément avant de signer le code du bundle d’application dans son ensemble.

Ré-exécuter manuellement la commande codesign que Xcode exécute normalement, tout en ajoutant l’indicateur --deep à la fin, signe correctement l’application.

Je ne suis pas encore sûr des ramifications exactes de cette signature manuelle ou si je peux modifier la version de Xcode pour append automatiquement l’ --deep , mais cela semble être le problème sous-jacent. ( codesign ne signe plus automatiquement votre bundle d’applications.)

Comme souligné dans d’autres réponses, il y a un changement dans la façon dont la signature du code fonctionne. Si vous avez installé l’un des Xcode 5 DP, 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’append à vos indicateurs de signature de code (Target, Build Settings) voir image ci-dessous.

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

Pour moi, ce problème a été causé après avoir fait glisser un dossier nommé “resources” dans mon projet. Après avoir changé son nom en autre chose (comme “resourcessss” par exemple), l’erreur a disparu.

J’ai eu le même problème, mais la réponse était simple: l’identité de la signature du code sur mon application était définie sur “-“, donc simplement paramétré sur “Don’t Code Sign” m’a 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 ce que c’est.

Cela pourrait aider Somone:

J’ai finalement trouvé la solution par essais et erreurs. Dans mon cas, j’avais un nom de dossier correspondant à la variable «Nom du produit» dans les parameters de construction. Cela correspondait également au nom du projet entier! J’ai donc simplement changé un champ. J’ai modifié les “Paramètres de construction” -> “Nom du produit”. La valeur de MySpecialApp a été modifiée en My-SpecialApp. C’était tout simplement ça! Je me suis ensuite connecté au portail des développeurs Apple et j’ai créé un nouveau numéro d’identification d’application et des profils d’approvisionnement mobile pour le développement et la dissortingbution. Le rest appartient à l’historique. Mes versions fonctionnent maintenant lorsqu’elles sont déployées via la dissortingbution Ad Hoc. Une note finale à ce sujet. Il s’agit là d’un bogue que Apple devrait soit alerter l’utilisateur qu’il a fait quelque chose de mal et activer une action corrective automatisée. – Voir plus sur: http://www.chrisdanielson.com/2012/08/29/codesign-ipa-and-the-code-object-is-not-signed-at-all-problem/#sthash.F0nF3BbC. dpuf

Pour moi, c’était un Framework PaddleMA corrompu qui: 1. Je me suis retiré de mon fichier Cocoapods 2. pod install Ran 3. Redémarrage de mon Xcode

et cela a résolu le problème. Pour une raison quelconque, un framework corrompu empêchera sa signature, mais XCode ne montre pas clairement cette erreur et vous propose une bonne solution. Ont soulevé un bug avec Apple pour corriger.