Erreur de l'utilitaire de validation binaire incorporé

Depuis hier, Xcode fait des bêtises en essayant de lancer mon application WatchKit sur mon iPhone. Cela me donne l'erreur:

Erreur de l'utilitaire de validation binaire incorporé

     

Erreur: avertissement: est un répertoire

It's not very helpful and it seems like it's complaining about provisioning profiles for my Watchkit Extension target. I think I set it up correctly by following this answer.

Voici comment j'ai configuré mes profils. Trois ID d’application et six profils (trois pour le développement et trois pour la distribution).

Main app: enter image description here

WatchKit Extension: enter image description here

WatchKit Watch App: enter image description here

15
@JackDewhurst J'avais aussi cet avertissement dans la première version. Je l'ai corrigé mais l'application n'archive plus (je peux parfois l'exécuter sur mon iPhone aussi) mais c'est très frustrant.
ajouté l'auteur BalestraPatrick, source
Je reçois également cette erreur, mais uniquement lors de l'archivage. Cela pourrait avoir un rapport avec les trois avertissements juste avant ( "avertissement: ignorer la copie de la phase, le binaire est signé par un code" x 3).
ajouté l'auteur Jack Dewhurst, source
Ok mes précédents avertissements ne sont pas le problème, ils les ont corrigés et ils échouent toujours sur Avertissement: est un répertoire .
ajouté l'auteur Jack Dewhurst, source

9 Réponses

I had my custom framework linked and embedded in both the WatchKit Extension and the App. Removing the framework from General > Embedded Binaries of the WatchKit Extension fixed it for me. I did have to delete my Build folder and restart Xcode.

6
ajouté
Vérifiez Général> Binaires incorporés de l'extension WatchKit. Votre cadre ne devrait pas être là.
ajouté l'auteur respectTheCode, source
Pouvez-vous s'il vous plaît élaborer? Mon cadre est uniquement lié aux phases de construction de mes extensions.
ajouté l'auteur BalestraPatrick, source
Tu es mon homme. Ça a marché! Merci.
ajouté l'auteur BalestraPatrick, source

J'ai pu résoudre le problème avec la configuration correcte des profils d'approvisionnement.

Avec Xcode 6.2 , j'ai pu créer un build de développement/débogage avec définition automatique et aucun PP supplémentaire pour le développement dans le portail, mais en utilisant le provisioning d'équipe.
Maintenant, avec Xcode 6.3 , je devais ajouter 3 PP explicites pour le développement dans le portail et les affecter dans les paramètres du projet.

4
ajouté
Trois, un pour chaque AppId. Ou en fait six, un pour le développement un pour l'archivage. Voir ma réponse dans la question SO liée (ou ici: stackoverflow.com/questions/28816339/… )
ajouté l'auteur dogsgod, source
Avez-vous également renouvelé vos PP comme indiqué? Si cela ne vous aide pas, je suis désolé, mais vous avez probablement un autre problème que moi.
ajouté l'auteur dogsgod, source
J'ai créé les trois identifiants d'application différents. Dois-je créer deux ou trois profils d'approvisionnement?
ajouté l'auteur BalestraPatrick, source
Voir ma question mise à jour. J'ai déjà suivi votre réponse sur cette question, mais toujours sur le même sujet.
ajouté l'auteur BalestraPatrick, source
Oui, supprimé et recréé plusieurs fois.
ajouté l'auteur BalestraPatrick, source

Je me suis aussi battu contre cette erreur. Pour moi, parfois ça construit, parfois non. C'est ainsi que je suis actuellement en mesure d'archiver mon application WatchKit. Je ne prétends pas savoir pourquoi cela fonctionne, mais simplement que cela fonctionne pour moi.

  1. Nettoyer Shift-Command-K
  2. Quittez Xcode
  3. Supprimer des fichiers dans ~ Library/Developer/Xcode/Derived Data </​​li>
  4. rouvrir Xcode et archiver
4
ajouté
Dans mon cas, le simple redémarrage de Xcode corrige le problème. Bizarre.
ajouté l'auteur Thomas Kekeisen, source
C'est du vaudou fou mais cela a fonctionné pour moi. Apple Watch a bien sûr rendu les choses difficiles. lol
ajouté l'auteur Mr Rogers, source
Ok, donc ça m'est encore arrivé et je pense avoir compris pourquoi. En utilisant git, je suis passé dans une autre branche qui n’était pas supportée par 6.3 et j’ai donc dû utiliser 6.2. Lorsque je suis revenu à la version 6.3, cela m'est encore arrivé.
ajouté l'auteur Mr Rogers, source

UPDATE: I've been having this issue on another project and managed to solve it by removing spaces in my WatchKit App and Extension target names. So before my target names were APPNAME WatchKit App and APPNAME WatchKit Extension changing them to APPNAMEWatchKitApp and APPNAMEWatchKitExtension Fixed everything!

ORIGINAL: Just to add my two cents I've been struggling with this issue for a few weeks now. I've narrowed it down to including CocoaPods in the project but without a more descriptive error I've got no idea why.

Je sais que mes profils de provisioning sont corrects car un projet vierge (y compris une cible WatchKit) les archive avec succès. Il n'y a pas de bibliothèques statiques dans mon extension WatchKit, donc ce n'est pas le problème non plus.

En fin de compte, la seule chose qui fonctionne de manière fiable consiste à utiliser xcodebuild + xcrun dans un terminal pour construire et archiver mon projet. Cet article explique xcode dans le terminal bien.

2
ajouté

Pour moi, le seul moyen de résoudre ce problème était de supprimer tous les espaces du nom du schéma et de regarder le nom de l'application.

Pour changer le nom du schéma: (par exemple, le schéma est "amazingapp RC")

1) Cliquez sur le schéma dans xCode (c’est là que vous choisissez le périphérique/simulateur)

2) Dans la liste, choisissez: "modifier le schéma"
3) Lorsque la nouvelle modale ouverte, appuyez sur "schéma en double" dans le coin inférieur gauche.
4) Choisissez un nom sans espaces et sauvegardez.
5) Maintenant, appuyez sur Gérer les régimes et sélectionnez l’ancien.
6) Retirez-le en appuyant sur le bouton "-"

Il est maintenant temps de donner le nom de l'extension:

1) Cliquez sur le schéma dans xCode (c’est là que vous choisissez le périphérique/simulateur)

2) Choisissez le schéma d'extension
3) Cliquez sur "modifier le schéma"
4) Choisissez Archive (release) en bas à gauche de la section
5) Entrez un nom propre sans espaces dans "Nom de l'archive"
6) Fermer.

Now build->clean, build->archive and you should be good to go.

2
ajouté

J'ai suivi les suggestions de @ dogsgod, révoqué tous mes certs, etc., j'ai recommencé, 6 profils, pas de chance. Après avoir effectué cela pendant près de 6 heures, un autre membre de l'équipe a vérifié et tout a fonctionné (laisser xcode résoudre les problèmes pour eux). S'assurer que les groupes sont activés pour tous les identifiants d'application (j'utilise des groupes pour partager des données entre le kit de surveillance et l'application principale)

Donc, je pensais que c'était juste mon xcode.

Ensuite, je suis allé à git, je l'ai cloné, puis je l'ai bien compilé.

Peut-être que tout dans mon magasin s’est débarrassé des fichiers qui me bloquaient. Ou peut-être parce que je l'ai tiré après qu'ils l'aient commis. Il est presque juste vaudou à ce stade, mais cela a fonctionné

1
ajouté

Dans mon cas, cela s'est avéré être mes préférences Xcode.

I had my DerivedData -> Advanced Settings (Build Location) set to "Custom" = "Relative to Workspace".

Je l'ai changé en Unique et cela a fonctionné.

Espérons que cela aide quelqu'un.

0
ajouté

EDIT: A day later I can share one more thought. While the git cloning works, the problem resurfaces after I make some changes. Which makes me wonder if the problem comes from a bad file formatting (like non unix-like EOF or similar) or just a bug in Xcode. Anyways, my workflow currently is as follows:

1) git clone to another directory
2) archive
3) if there is an error, I need to fix it, 
4) git commit & git push
5) repeat steps 1 & 2 ... 

Ce qui est gênant, mais c'est le seul moyen d'archiver mon projet et de le télécharger sur l'App Store ...

ORIGNAL POST: I have encountered this error as well. My project uses CocoaPods, multiple targets and build schemes as well as group entitlements. At times I can't build, although this is fixable (see below) but the problem with archiving persited for a longer time. After two days of fighting with it, my summary is as follows:

J'ai suivi toutes les réponses et je peux le voir parfois:

1) projet propre

2) (facultatif - pas toujours nécessaire) redémarrer Xcode

3) supprimer le contenu du dossier de données dérivé

me permet de compiler et d'exécuter l'application. Mais je ne peux toujours pas archiver. Parfois, il me semble que je dois le faire deux fois.

En dehors de ce qui précède, j'ai essayé (et n'ai pas archivé) les suggestions suivantes:

  • renommez les noms de cible (et les dossiers contenant) de manière à ne PAS inclure d'espaces, les cibles Extension et WatchApp n'ont pas d'espaces dans leurs noms respectifs, mais le projet ne sera pas archivé (aucune modification)
  • J'ai vérifié qu'il n'y avait pas de fichiers binaires incorporés dans la cible d'extension (watchApp ne dispose pas de cette option)
  • J'ai essayé de modifier la cible de déploiement (iOS 8.3 pour Xcode 6.4 par défaut) en versions 8.2 et 8.4 sans aucune chance pour l'archivage.
  • J'ai recréé les AppID et tous les profils d'approvisionnement pour les schémas "adHoc" et "release", sans aucune chance.
  • et j'ai vérifié que le schéma actuel que j'essaie d'archiver n'a pas d'espaces, mais il ne change toujours rien.
  • J'ai même essayé la dernière suggestion, c'est-à-dire changer l'emplacement du dossier Derived Data par défaut, mais, comme je le pensais bien, rien n'a changé.

Ce qui est intéressant, c’est la suggestion de Mike Manh: de transférer le rapport dans un autre dossier .

Après avoir cloné le référentiel dans un nouveau dossier vide, tout a soudainement commencé à fonctionner. Cela me mène à la conclusion qu'il pourrait y avoir des restes de fichiers/liens brisés/quoi que ce soit dans mon dossier de projet actuel. Je suppose que cela aurait pu arriver lorsque j'essayais de réorganiser ma branche de développement de watchKit dans la branche principale actuelle. Ce qui a commencé à me semer des conflits fous et j'ai finalement avorté le rebasement. Peut-être que c'était le moment où l'option d'archivage a cessé de fonctionner normalement.

0
ajouté

I had the same problem. In Xcode 6.* I fixed it by cleaning my DerivedData folder. But in new Xcode 7 it didn't help. So I removed spaces in WatchKit Extension and WatchKit App ("planckMailiOS WatchKit App" -> "planckMailiOSWatchKitApp" and "planckMailiOS WatchKit Extension" -> "planckMailiOSWatchKitExtension").

0
ajouté