web-dev-qa-db-fra.com

Xcode ne reconnaîtra pas mon nouveau profil d'approvisionnement

Le profil d'approvisionnement de développement de mon application a expiré il y a quelques semaines. Je me suis donc rendu sur le portail d'approvisionnement pour en obtenir un nouveau. Après l'avoir obtenu, j'ai visité Xcode Organizer, supprimé le profil expiré de mes appareils ainsi que de mon Mac, puis importé le nouveau profil. Xcode installe immédiatement le profil sur mes appareils et mon application s'exécute à nouveau sur les appareils.

Le problème est que, bien que l'organisateur puisse voir le nouveau profil et l'installer normalement, le IDE devient confus entre l'ancien et le nouveau. Chaque fois que j'essaie de créer l'application, elle échoue immédiatement. La console d'erreur me dit que Xcode ne peut pas trouver l'ancien profil, car le GUID répertorié appartient à l'ancien. C'est étrange; Je pensais que Xcode aurait été au courant du nouveau profil maintenant.

J'ai essayé de supprimer le nouveau profil de mes appareils et de mon Mac, puis de le réinstaller. Cela ne fonctionne pas, Xcode essaie toujours de rechercher l'ancien. J'ai également essayé de sélectionner un profil différent pour que Xcode oublie l'ancien, puis de sélectionner le nouveau. J'ai même essayé d'entrer manuellement le GUID du nouveau dans le choix Autre . Pourtant, Xcode insiste toujours pour rechercher l'ancien profil, qui a déjà disparu de mon Mac.

Comment convaincre Xcode que j'ai généré un nouveau profil de provisioning que mon application doit utiliser?

21
BoltClock

tl; dr: s'avère que je devais simplement éditer le fichier de projet manuellement pour indiquer à Xcode le nouveau profil. Maintenant, je ne sais pas pourquoi je devais mettre à jour manuellement le fichier de projet. Peut-être que j'ai fait quelque chose de mal lors du processus d'importation du nouveau profil dans Xcode, de sorte que mon nouveau profil n'a pas été importé. Ou le système de fichiers s'est étouffé à mi-chemin et Xcode n'a pas été en mesure de se mettre à jour. Tant pis.

Maintenant pour le amusement partie technique:

IMPORTANT: Comme pour tout ce qui implique la modification de fichiers, vous ne devriez pas le faire: assurez-vous de sauvegarder votre paquet .xcodeproj et/ou l'intégralité de votre projet Xcode, ou assurez-vous que votre projet Xcode est conservé dans sa version appropriée contrôle . Vous ne voulez pas vous tromper et faire en sorte que Xcode cesse de construire votre projet sur votre appareil, sans que rien ne soit utilisé.

J'ai jeté un coup d'œil au contenu du paquet .xcodeproj de mon application (le Xcode n'est pas en cours d'exécution pour le moment). Pour les afficher, ouvrez votre dossier de projet dans le Finder, puis cliquez sur votre fichier .xcodeproj et maintenez la touche Contrôle enfoncée, puis choisissez Afficher le contenu du paquet :

 Breeze.xcodeproj /
 Daniel.mode1v3 
 Daniel.pbxuser 
 Project.pbxproj 

Ensuite, ouvrez project.pbxproj dans un éditeur de texte (c'est du texte, pas du binaire) et regardons autour de vous pour trouver des informations sur la configuration de la construction.

Il existe une section intitulée /* Begin XCBuildConfiguration section */ (que vous pouvez trouver en utilisant la fonction de recherche de votre éditeur). C'est une liste d'entrées, chacune représentant une configuration de signature de code pour un profil donné dans une configuration de construction donnée.

Voici des informations sur le profil que j'utilise pour signer mon binaire pour le développement:

1D6058940D05DD3E006BFB54 /* Debug */ = {
    isa = XCBuildConfiguration;
    buildSettings = {
        ALWAYS_SEARCH_USER_PATHS = NO;
        "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer: Daniel Tan (XXXXXXXXXX)";
        COPY_PHASE_STRIP = NO;
        GCC_DYNAMIC_NO_PIC = NO;
        GCC_OPTIMIZATION_LEVEL = 0;
        GCC_PRECOMPILE_PREFIX_HEADER = YES;
        GCC_PREFIX_HEADER = Breeze_Prefix.pch;
        GCC_VERSION = com.Apple.compilers.llvmgcc42;
        INFOPLIST_FILE = "Breeze-Info.plist";
        IPHONEOS_DEPLOYMENT_TARGET = 4.0;
        PRODUCT_NAME = "Breeze";
        "PROVISIONING_PROFILE[sdk=iphoneos*]" = "36F99F3E-805F-47A7-95D4-FF8324711CBE";
        SDKROOT = iphoneos;
    };
    name = Debug;
};

Il convient de noter cette ligne:

"PROVISIONING_PROFILE[sdk=iphoneos*]" = "36F99F3E-805F-47A7-95D4-FF8324711CBE";

C'est le GUID signalé par l'erreur de construction; l'identifiant de mon ancien profil d'approvisionnement expiré.

Tout ce que j'avais à faire était de le remplacer par le GUID du nouveau profil:

"PROVISIONING_PROFILE[sdk=iphoneos*]" = "E6E6369E-FD58-4886-9C3A-72C9DAE36501";

J'ouvre à nouveau mon projet dans Xcode et maintenant, mon application crée et installe correctement sur mes appareils, à l'aide du nouveau profil d'approvisionnement.

17
BoltClock

Voici comment je l'ai fait dans Xcode 4:

  1. Sélectionnez Ne pas signer le code dans Projet> Paramètres de construction> Signature du code.
  2. Nettoyer la construction
  3. Reconstruisez-le à nouveau - devrait afficher une erreur du type "ce matériel a besoin d'être signé"
  4. Choisissez le nouveau profil dans Code Signing
  5. Reconstruire
15
hackdev

J'ai pu corriger cette erreur en la changeant en "Ne pas signer avec le code" dans Identité de signature de code. Build, et vous obtenez le message d'erreur "la signature de code est requise pour le type de produit ... blah ...". Revenez ensuite en arrière et sélectionnez le bon profil. Construire et tout va bien. Cela m'est arrivé parce que mon certificat a expiré et que je l'ai renouvelé. En plus de ce qui précède, j'ai également dû retirer l'ancien certificat de mon trousseau et de l'organisateur.

8
Tige Phillips
  1. Fermer de xcode
  2. edith avec texmate, youtproject.xcodeproj
  3. Trouver cette ligne "PROVISIONING_PROFILE[sdk=iphoneos*]" = "E8DEEBA3-FE0A-419F-9F7E-258572D55807";
  4. Effacer
  5. Redémarrez xcode build & archive for enterprise
1
Axel Galan

Ma solution à ce problème était:

  1. Téléchargez votre nouveau profil d'approvisionnement
  2. Double-cliquez sur le profil d'approvisionnement pour l'installer.
  3. Accédez au répertoire suivant sur votre Mac: /Users/<your.username>/Library/MobileDevice/Provisioning Profiles
  4. Recherchez l'ancien profil d'approvisionnement que vous ne voulez plus (mais continue à apparaître dans Xcode). Cela peut être utile pour cette étape: https://github.com/chockenberry/Provisioning
  5. Supprime-le
  6. Quitter complètement Xcode
  7. Rouvrir Xcode
  8. Vous devriez maintenant pouvoir sélectionner votre nouveau profil de provisioning
1
Hodson

Pour ajouter à la solution ci-dessus , vous pouvez utiliser la jolie xcodeproj gem pour vous aider avec ce genre de choses. Notez que cela convertit votre plist style OpenStep key = value; en XML. Remarque: j'ai constaté que Xcode le modifiait si vous apportiez ultérieurement des modifications au fichier de projet dans Xcode. Soit le style de fichier construit soit bien dans Xcode, soit à partir de la ligne de commande. Pour un exemple de comment je l'utilise

project = Xcodeproj::Project.new('Foo.xcodeproj')
csi_key = 'CODE_SIGNING_IDEDNTITY'
project.targets.each do |target|
  target.build_configurations.each do |conf|
    conf.build_settings[csi_key] = 'iPhone Developer: Cool Dood (XYZ123)' unless conf.build_settings[csi_key] == nil
  end
end

Voici un résumé de la façon dont je l’utilise: https://Gist.github.com/82times/5594887

1

Dans mon cas, avec XCode 5, lorsque mon certificat de développeur a expiré, j'ai rencontré ce problème. J'ai téléchargé manuellement le nouveau certificat et le nouveau profil d'approvisionnement. J'ai ajouté le certificat au trousseau et le profil d'approvisionnement aux périphériques de l'organiseur. 

Cependant, XCode n'arrêtait pas de se plaindre de ne pas pouvoir signer l'application. Je pensais que dans les préférences XCode 5, l'ancien profil de provisioning était toujours affiché et le nouveau profil n'était pas actualisé en dépit des nombreux rechargements que j'avais effectués là-bas. 

Finalement, j'ai utilisé l'utilitaire de configuration iPhone pour supprimer l'ancien profil d'approvisionnement et ajouter le profil d'approvisionnement récemment téléchargé. Après la signature du code a fonctionné comme prévu. 

0
Rajan Ponnappan

La plupart des réponses n'ont pas fonctionné pour moi comme elles semblent l'être pour les versions plus anciennes.

Pour Xcode 8.3.2:

  1. Xcode-> Préférences-> Comptes
  2. Sélectionnez un identifiant Apple
  3. Double-cliquez sur votre équipe
  4. Cliquez sur le menu déroulant "+" en bas à gauche pour "Créer un certificat".
  5. Choisissez le développement iOS
  6. Cliquez sur 'Terminé'

Après cela, j'ai pu dire à Xcode qu'il utilisait le dernier profil en cliquant sur l'icône d'informations "i" à côté de "Profil géré Xcode" sous Cibles-> Général-> Signature et confirmation que la date de "création" reflétait la nouvelle.

0
lundhjem

Je pensais qu'un double-clic sur le profil d'approvisionnement téléchargé le placerait dans xCode Organizer Archive, mais cela ne fonctionnerait tout simplement pas pour moi. Les étapes suivantes ont finalement fonctionné pour moi.

  1. Ouvrir xCode
  2. Allez à Produit -> Destination -> Périphérique iOS
  3. Aller au produit -> Archive
0
tyler.frankenstein