Erreur de signature de code: le profil de provisionnement est introuvable après la suppression du profil expiré

500

J'ai essayé de reconstruire une application qui fonctionnait hier. J'ai reçu un message indiquant qu'un profil avait expiré, je l'ai donc supprimé de l'iPod et d'iTunes. Lorsque j'ai choisi un nouveau profil (un avec un * dans l'identifiant), j'obtiens maintenant une erreur:

Erreur de signe de code: le profil d'approvisionnement (chaîne longue) est introuvable.

Qu'est-ce que je rate? J'ai parcouru des questions connexes et je n'ai pas vu ce scénario déjà.

quantumpotato
la source

Réponses:

856

Parfois, votre fichier de projet xcode est gâché, surtout si vous avez un ancien projet et que vous l'avez d'abord créé avec une ancienne version de xcode / iphone sdk. Ce que vous devez faire est d'ouvrir le fichier de projet dans un éditeur de texte, de rechercher la «longue chaîne» de votre erreur et d'effacer manuellement cette ligne. En fait, vous devez simplement continuer et effacer toute ligne pointant vers des profils de provisionnement. Rouvrez ensuite le projet dans xcode, allez dans les paramètres et resélectionnez votre nouveau profil. Cela clarifie des problèmes comme celui-ci la plupart du temps. Les lignes qui pointent vers les profils d'approvisionnement ressembleront à ceci:

PROVISIONING_PROFILE = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
Brad The App Guy
la source
210
Le fichier .xcodeproj est en fait un répertoire, comme un bundle d'application.Si vous faites un clic droit dessus dans le Finder, vous pouvez sélectionner afficher le contenu du package, puis vous verrez plusieurs fichiers à l'intérieur (ou dans le terminal juste un cd dedans). Le fichier de projet réel est celui qui contient une extension .pbxproj. Une fois que vous l'ouvrez avec un éditeur de texte, les lignes que vous recherchez doivent commencer par 'PROVISIONING_PROFILE = ou' '"PROVISIONING_PROFILE [sdk = iphoneos *]" ='. Supprimez tous ceux-là et alors vous devriez être bon.
Brad The App Guy
2
J'ai constaté qu'en plus de ce qui précède, je devais supprimer tous mes profils, les télécharger à nouveau depuis le portail de provisioning et les réimporter dans XCode. Ensuite, dans Paramètres de génération / Signature de code, sélectionnez le profil approprié pour toutes les configurations de génération.
Jay Imerman
11
Encore un précieux conseil avec XCode4 en 2012. Merci!
Alexey Rusakov
6
... aaaaet encore de précieux conseils avec Xcode6 en 2014! Merci beaucoup!
Tom van Zummeren
4
La seule chose qui a fonctionné pour moi: Préférences -> Comptes -> Afficher les détails -> Actualiser. Cela a rechargé tous les profils d'approvisionnement à partir du portail de développement. J'espère que cela aide quelqu'un
blackhawk4152
129

Voici une solution plus simple qui a fonctionné pour moi et qui ne nécessite pas l'édition manuelle du fichier de projet:

Dans XCode, dans le volet "Groupes et fichiers", développez "Cibles" et double-cliquez sur la cible de votre application. Cela fait apparaître le volet d'informations pour la cible. Dans la section "Build", vérifiez la section "signature de code" pour tous les anciens profils et remplacez-les par le bon.

Notez que cela est différent de double-cliquer sur l'icône de votre projet et de changer le profil à partir de là. Assez incroyable :)

Ou Je

Ou Je
la source
1
Merci! J'essaierai cela la prochaine fois que ça arrivera :)
quantumpotato
6
et assurez-vous de sélectionner d'abord la bonne configuration de construction :)
Johnus
1
Cela ne fonctionne pas toujours. Parfois, vous devez toujours entrer et le modifier manuellement, comme indiqué dans la première réponse.
SpaceTrucker
Juste une autre note pour faire écho à SpaceTrucker: cette méthode ne fonctionne pas toujours. La réponse acceptée garantit que Xcode cessera de rechercher ce profil fantôme.
Simone Manganelli
J'ai constaté qu'en plus de ce qui précède, je devais supprimer tous mes profils, les télécharger à nouveau depuis le portail de provisioning et les réimporter dans XCode. Ensuite, dans Paramètres de génération / Signature de code, sélectionnez le profil approprié pour toutes les configurations de génération.
Jay Imerman
76
  1. Propriétés du projet et des cibles -> "Ne pas coder le signe" -> OK -> cmd + S (ou cmd + B);
  2. Propriétés du projet et des cibles -> "Votre profil d'approvisionnement" -> OK

  3. Tout fonctionne à nouveau!

user732414
la source
4
C'est la seule solution qui a fonctionné pour moi (en utilisant XCode4). Construire l'application avec "Ne pas coder le signe" sélectionné était une étape obligatoire pour moi.
Chazbot
Cela semble être une meilleure solution que celle avec plus de 200 votes positifs, car Xcode pourrait changer la façon dont il écrit son fichier de projet à l'avenir.
Danyal Aytekin
1
C'est la bonne solution qui a fonctionné pour moi dans Xcode 4.2
Selvin
10

Je suis d'accord avec la réponse de Brad, que vous pouvez résoudre ce problème en modifiant votre cible / projet à la main, en supprimant toutes les lignes comme celle-ci:

PROVISIONING_PROFILE = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";

Cependant, dans Xcode 4.2 et versions ultérieures, il existe un moyen beaucoup plus simple d'accéder à ce texte et de le sélectionner et le supprimer. Dans le navigateur de projet à gauche, sélectionnez votre projet (la ligne la plus haute du navigateur de projet). Maintenant, choisissez simplement Affichage> Éditeur de version> Afficher l'éditeur de version. Cela affiche votre projet sous forme de texte et vous pouvez rechercher PROVISIONING et supprimer la ligne gênante, juste là dans le volet de l'éditeur de Xcode.

mat
la source
Après cela, vous n'avez pas à fermer et ouvrir le projet. Meilleure approche :)
viral
6

Je viens de voir une variation sur ce problème: je suis allé dans le fichier project.pbxproj selon les notes de Brad Smith ci-dessus, sauf que dans ce cas, toutes les lignes PROVISIONING_PROFILE semblaient être correctes, sans occurrence de la "mauvaise" chaîne de profil que XCode ne pouvait pas ne trouve pas.

Cependant, le correctif était le même: supprimer TOUTES les lignes PROVISIONING_PROFILE dans project.pbxproj, même si elles semblaient "bonnes" en théorie, puis rouvrir le projet dans XCode.

theevank
la source
4

Pour obtenir la solution de Brad entièrement dans Terminal, utilisez ces commandes

  1. cd [Xcode project parent]
  2. vi [Xcode project name].xcodeproj/project.pbxproj
  3. /[offending provisioning profile] [Enter]
  4. dd - supprimer toute la ligne
  5. Appuyez sur n jusqu'à ce qu'il n'en trouve plus
  6. Ctrl + x pour enregistrer et fermer
MechEngineer
la source
3

Dans mon cas, le problème a été résolu en ouvrant Fenêtre -> Organiseur, en sélectionnant mon appareil et en supprimant l'ancien profil de provisionnement sous le panneau "Provisioning" à droite. L'ancien était déjà marqué d'un symbole "x" rouge mais l'iPhone l'utilisait toujours.

Outre ce profil, le nouveau apparaissait également (avec le même nom) et après avoir simplement relancé l'application, je l'ai fait fonctionner correctement.

stack-o-frankie
la source
+1, parfois je n'ai pas pu installer à cause d'un profil expiré - même pas avec le même identifiant! - était sur mon appareil.
quantumpotato
Celui-ci a fonctionné pour moi, mais j'ai également dû relancer XCode pour le faire fonctionner.
Matt
3

Je viens de passer une heure à le faire et avec l'aide des conseils de Brad et quelques changements supplémentaires, tout a fonctionné.

Je l'ai fait en utilisant les éléments suivants: 10.7.3, Xcode 4.3.2, iOS 5.1 btw.

1) Faites un clic droit sur votre myapp.xcodeprojet sélectionnez le contenu de l'emballage

2) ouvrir project.pbxprojavec un éditeur de texte (ne recommande pas textedit car il peut visser la mise en forme)

3) Faites défiler jusqu'à ce que vous trouviez /* Begin XCBuildConfiguration section */

4) Notez que vous avez des sections de débogage et de publication

5) Dans la section des versions, jetez un œil CODE_SIGN_IDENTITYet "CODE_SIGN_IDENTITY[sdk=iphoneos*]"cela devrait ressembler à ceci:

CODE_SIGN_IDENTITY = "iPhone Distribution: MyCompany LLC";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: MyCompany LLC";

6) Jetez un œil PROVISIONING_PROFILEet "PROVISIONING_PROFILE[sdk=iphoneos*]"ils devraient ressembler à ceci:

PROVISIONING_PROFILE = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";

Cela devrait correspondre à votre profil d'approvisionnement dans Xcode. Pour voir s'ils correspondent, ouvrez Xcode> Fenêtre> Organiseur> Périphériques> Profils de provisioning> Faites un clic droit sur le profil> Révéler dans le Finder> Le nom de fichier du .mobileprovision est votre identifiant de profil.

7) Faites défiler vers le bas dans le project.pbxprojet trouvez une deuxième instance de la section de publication. La deuxième instance de la section de publication devrait se terminer par un commentaire disant/* End XCBuildConfiguration section */

8) assurez-vous que la deuxième section correspond à la première section de sorte que CODE_SIGN_IDENTITY, "CODE_SIGN_IDENTITY[sdk=iphoneos*], et PROVISIONING_PROFILEsont tous remplis.

bobbypage
la source
2

Une suggestion que je ferai car personne ne l'a encore dit: S'IL VOUS PLAÎT, S'IL VOUS PLAÎT, VEUILLEZ faire une sauvegarde de l'ensemble de votre fichier .xcodeproj AVANT de commencer à modifier son contenu. Visser le fichier du projet et ne pas avoir de sauvegarde entraînera une expérience très très désagréable.

Être en mesure de se retirer d'un montage peut être une aubaine.

Richard Brown
la source
Oui, c'est pourquoi les dieux SCM ont fait le contrôle des sources.
Br.Bill
1

Je viens de rencontrer ce problème dans mon XCode4. Pour le corriger, vous devez mettre toutes les dispositions correctes dans la configuration de débogage et de libération.

J'essayais de soumettre (en archivant) mon application. Je change donc simplement les dispositions de débogage en «Ne pas coder le signe» et la disposition de libération en disposition de l'appstore de mon application.

Cela le corrige et me permet d'archiver normalement. J'espère que cela pourra aider.

GeneCode
la source
1

Sélectionnez les lignes dans la signature de code qui sont vides sous N'importe quel SDK iOS et sélectionnez le bon certificat.

sunkencity
la source
1

La solution de Brad Smith a fonctionné pour moi, mais j'ai également dû supprimer le champ CODE_SIGN_IDENTITY pour le faire fonctionner.

jean_jean
la source
Cela se fait manuellement en modifiant le fichier de projet xcode dans un éditeur de texte, et j'ai souvent dû le faire pour recommencer lorsque je suis dans un état cassé. Savoir les deux choses qui peuvent être supprimées est souvent très utile. Bon point.
Warren P
0

Malheureusement, cette approche n'a pas fonctionné pour moi. Mais voici un correctif qui a fonctionné pour moi (pour que cela fonctionne, vous avez besoin d'un fichier de projet fonctionnel sur Subversion):

Je suis revenu à une version de travail de mon fichier de projet. Comme il n'est pas possible de revenir avec Xcode ( Où est l'option 'Revert' dans le contrôle de source de Xcode 4? ) - J'ai utilisé Tortoise, ma machine Windows et ce tutoriel ( http://tortoisesvn.net/docs/nightly/TortoiseSVN_en /tsvn-howto-rollback.html ) pour revenir à un fichier de projet plus ancien.

Comme le tutoriel n'a pas fonctionné pour moi, j'ai simplement utilisé Tortoise pour enregistrer la révision de travail de mon fichier de projet sur une clé USB pour le porter sur mon Mac. Après cela, j'ai remplacé le nouveau fichier de projet cassé par l'ancien qui fonctionnait, nettoyé et cela a fonctionné comme un charme!

Chris Conway
la source
0

J'avais des problèmes parce que j'ai mis à jour mon profil d'approvisionnement AdHoc avec de nouveaux appareils à utiliser sur TestFlight. En principe, cela se produit car xcode a une ancienne référence à votre profil d'approvisionnement dans les paramètres de génération de signature de code pour le projet ou les cibles. La façon dont j'ai corrigé le mien était de:

  1. Accédez à la fois aux paramètres de génération cible et aux paramètres de génération de projet. Sous la signature de code, changez tous les profils d'approvisionnement en autre chose.
  2. Accédez aux appareils / profils d'approvisionnement dans l'organiseur, supprimez les profils incriminés, puis cliquez sur le bouton d'actualisation en bas à droite.
  3. Revenez aux paramètres de génération de cible et de projet et définissez vos profils de provisioning sur les profils de provisioning actualisés appropriés (espérons-le).
George McKibbin
la source
0

Au moins dans Xcode 5, c'est la chose qui a résolu le problème pour moi:

Sous profil d'approvisionnement, sélectionnez le profil d'approvisionnement incriminé, puis sélectionnez un profil d'approvisionnement valide dans le menu déroulant.

entrez la description de l'image ici

RawMean
la source
0

Vous pouvez supprimer l'ancienne référence du fichier d'approvisionnement. Ensuite, après avoir importé un nouveau profil d'approvisionnement et sélectionné le générateur Xcode.

annu
la source