web-dev-qa-db-fra.com

Erreur de signature de code chaque fois que j'essaie de remplacer des fichiers de stock dans une nouvelle application SceneKit

Donc, Xcode 8 a été récemment publié et je ne suis toujours pas sûr de la cause exacte de ce problème (c'est peut-être simplement le fait qu'il s'agit d'une version bêta de Xcode ou peut-être que je fais quelque chose de mal).

Le problème est que j'essaie de créer une nouvelle application SceneKit et que je suis en train de jouer avec les fichiers .scn.

J'ai créé un fichier .scn, "hero.scn" à l'intérieur d'un "hero.scnassets" et j'ai également fourni un fichier .png à l'intérieur du dossier hero.scnassets sous le nom de "heroTexture.png"

Le code normalement fourni par Xcode 8.0 beta 1 pour ce projet dans le fichier "GameViewController.Swift" a été modifié comme suit:

Code d'origine:

...
let scene = SCNScene(named: "art.scnassets/ship.scn")!
...
let ship = scene.rootNode.childNode(withName: "ship", recursively: true)!
ship.run(SCNAction.repeatForever(SCNAction.rotateBy(x: 0, y: 2, z: 0, duration: 1)))

Code édité:

...
let scene = SCNScene(named: "hero.scnassets/hero.scn")!
...
let hero = scene.rootNode.childNode(withName: "hero", recursively: true)!
hero.run(SCNAction.repeatForever(SCNAction.rotateBy(x: 0, y: 2, z: 0, duration: 1)))

Erreur reçue:

.../Xapp.app: resource fork, Finder information, or similar detritus not allowed
Command /usr/bin/codesign failed with exit code 1

Conclusion de la question:

Pourquoi est-ce que j'obtiens une erreur de signature alors que je n'ai fait que remplacer des fichiers?

Sidenote: Je sais comment résoudre le problème de signature de code, mais cela implique de redémarrer l'ensemble du projet (ce qui ne me dérange pas). Le problème que je rencontre est cependant chaque fois que je change les fichiers, j'obtiens cette erreur.

P.S: Voici une structure de fichier juste pour la facilité . FileStruct

25
Mohammad Al-Ahdal

Débarrassez-vous de cette erreur de construction en trois étapes faciles:

1) supprimez le dossier le plus récent lié à votre application dans DerivedData (~/Library/Developer/Xcode/DerivedData)

2) dans le terminal, cd vers le répertoire du projet en cours

3) courir

xattr -rc.

pour supprimer tous les attributs étendus (généralement liés aux fichiers image précédemment modifiés dans Photoshop)

reconstruisez votre application!

109
ecume des jours

L'erreur provient des attributs contenus dans vos fichiers image.

Voici une commande simple pour trouver tous vos fichiers png et supprimer leurs attributs. Exécutez cela dans le répertoire racine de vos projets à partir du terminal. Reconstruire, nettoyer et résoudre le problème.

find . -type f -name '*.png' -exec xattr -c {} \;
18
Mark McCorkle

J'ai eu le resource fork, Finder information, or similar detritus not allowed erreur après avoir installé la version de développement de macOS et dans mon cas, elle était due à des attributs invalides sur certains de mes fichiers.

Je l'ai corrigé en recherchant com.Apple.FinderInfo attributs définis sur mes fichiers comme celui-ci

ls -alR@ . > investigate.txt

Ouvrez maintenant enquêter.txt dans votre éditeur de texte préféré et effectuez une recherche sur com.Apple.FinderInfo et effacer les attributs de tous les fichiers ayant cet attribut défini. Vous pouvez le faire en utilisant

xattr -c <filename> par exemple. xattr -c iTunesArtwork.png

Une fois que j'ai effacé tous mes fichiers, j'ai pu coder à nouveau mon application.

9
Peter Theill

Je n'ai pas pu supprimer les informations du Finder et le redémarrage n'a pas fonctionné. Pour moi (j'ai Sierra beta installé), c'était parce que le projet était dans mon dossier Documents qui est synchronisé avec iCloud. Dès que j'ai fait un projet qui n'est pas dans un dossier synchronisé avec iCloud, cela a bien fonctionné, donc le bogue pourrait être lié à iCloud également/au lieu de Xcode

1
Sophie Clark

Cela semble clarifier le problème. Créez un dossier .atlas (c'est-à-dire "myImages.atlas"), à l'extérieur du dossier racine du projet. Ajoutez vos images dans le dossier .atlas. Ensuite, à l'intérieur du projet, "ajoutez des fichiers à ..." dans le dossier .atlas (remarque: évitez de placer le dossier .atlas dans le dossier art.scnasstes et assurez-vous que le projet est "nettoyé" avant de reconstruire)

1
Lawrence Fletcher

A corrigé! Apparemment, c'était une erreur avec le nouveau Xcode. Ce que vous devez faire est de redémarrer OS X/macOS et de nettoyer le projet. Il devrait marcher après ça!

1
Mohammad Al-Ahdal

Il s'agit d'un changement de renforcement de la sécurité qui a été introduit avec iOS 10, macOS Sierra, watchOS 3 et tvOS 10.

La signature de code ne permet plus à aucun fichier d'un ensemble d'applications d'avoir un attribut étendu contenant une fourchette de ressources ou des informations du Finder.

Pour voir quels fichiers sont à l'origine de cette erreur, exécutez cette commande dans Terminal:

$ xattr -lr

remplaçant par le chemin d'accès à votre ensemble d'applications réel.

Voici un exemple de cette commande en action:

$ xattr -lr Foo.app

/Applications/Foo.app: com.Apple.FinderInfo:

00000000 00 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 | ................ |

Vous pouvez également supprimer tous les attributs étendus de votre ensemble d'applications avec la commande xattr:

$ xattr -cr

Notez que la navigation dans les fichiers d'un ensemble avec la commande Afficher le contenu du package du Finder peut entraîner l'ajout d'informations du Finder à ces fichiers. Sinon, auditez votre processus de génération pour voir où les attributs étendus sont ajoutés.

1
Kalpesh Panchasara