Xcode 5: erreurs de droits de signature de code

149

J'ai construit une nouvelle application qui va prendre en charge IOS 7. J'ai le nouveau XCode 5 GM et j'ai essayé de signer mes applications en utilisant mon nouveau profil d'approvisionnement et mon certificat de distribution, mais j'ai des problèmes avec la distribution. J'obtiens constamment l'erreur suivante:

"Droits de signature de code non valides. Les droits figurant dans la signature de votre ensemble d'applications ne correspondent pas à ceux contenus dans le profil d'approvisionnement. Selon le profil d'approvisionnement, l'ensemble contient une valeur de clé qui n'est pas autorisée:" [XXXX.com.sample .company] 'pour la clé' keychain-access-groups ".

Également la même erreur pour une valeur de clé appelée application-identifier.

Capture d'écran de l'erreur:

entrez la description de l'image ici

Benjamin de Bos
la source

Réponses:

208

La solution réside dans la nouvelle option de Xcode 5 qui dit profil de provisionnement. Définissez simplement le profil de provisionnement de la cible du projet sur le bon profil et cela fonctionnera.

entrez la description de l'image ici

Benjamin de Bos
la source
6
Pour ajouter à cette réponse, j'avais à la fois des types de distribution et de version pour le profil d'approvisionnement. J'ai eu cette même erreur et c'était parce que j'avais un profil de développement défini pour le type Release (j'avais pensé que j'utilisais le type Distribution et je n'avais pas remarqué le type Release). Une fois que j'ai défini cela sur mon profil de distribution, cela a fonctionné.
Bek
4
Pour clarifier davantage cette réponse, j'avais essayé de définir mon profil d'approvisionnement et mon identité de signature de code sur la ligne de niveau supérieur de chacun, à l'aide de la vue combinée. Cela le ramena toujours à <Plusieurs valeurs>. Lorsque j'ai développé les deux lignes, cependant, j'ai vu les sous-répertoires "Any iOS SDK" pour chaque configuration tous définis sur None, bien que les lignes Debug / Release listent le profil / identité de signature approprié. L'archivage dans cet état m'a toujours donné l'erreur, jusqu'à ce que je définisse explicitement toutes les lignes "Any iOS SDK" sur leurs valeurs appropriées.
qix
1
Nous avons passé des jours sur celui-ci! mauvaise chose à ce sujet , nous avons encore de choisir le même profil à nouveau lors de la construction de l'API. Comment avez-vous appris cela, Benjamin?
cregox
2
Malheureusement, cela ne fonctionne pas pour moi. J'ai vérifié mes profils sur le site Web developer.apple.com et j'ai activé les achats Game Center et In App. Je n'utilise pas non plus et je me demande si cela pourrait être un problème.
JScarry
4
Pour ajouter une clarification supplémentaire, notez que Xcode vous permet de choisir les informations de profil de provisioning pour un projet et une cible . Vous devez vous assurer que vous modifiez les paramètres de la cible et pas seulement du projet.
Brian Stormont
55

Si vous êtes comme moi et que vous pensez avoir TOUT essayé , archivé votre projet plus de dix fois, vous avez cogné la tête sur le clavier et obtenez toujours cette erreur. S'il vous plaît faites-vous une faveur et redémarrez simplement XCode , cela a fonctionné pour moi. Parfois, Apple ... je te déteste.

VGruenhagen
la source
J'ai créé deux applications différentes en une seule session xcode et j'ai obtenu 1000 erreurs. le redémarrage a fonctionné. Merci!
donmarkusi
Cela a fonctionné pour moi aussi. J'utilise Xcode 6.3. Je n'ai pas pu sélectionner le compte de développement Apple pour la signature du code. Un message d'erreur totalement indépendant était affiché à chaque fois que «l'ID d'application ios 'xxxxxxxxx' ne prend pas en charge les modifications apportées à la fonction de cartes». Un simple redémarrage de xcode l'a corrigé pour moi.
Sahil
3
Si je pouvais vous voter 1000 fois, je le ferais. Cela a fonctionné pour moi. Cela s'est produit sur XCode 7.1.
Manu Kanthan
25

J'ai suivi de nombreuses étapes ci-dessus, mais ce qui a finalement fonctionné pour moi a été de rafraîchir mes profils dans Xcode. Je ne sais pas pourquoi c'était nécessaire car le profil de distribution de mon application figurait déjà dans la liste. Voici les étapes:

  1. Préférences Xcode
  2. Onglet Comptes
  3. Sélectionnez votre identifiant Apple
  4. Appuyez sur le bouton Afficher les détails dans le panneau de détails de l'identifiant Apple
  5. Appuyez sur le bouton Actualiser dans le coin inférieur gauche
Joe Regan
la source
2
Une fois que vous faites cela, vous devez également réexécuter la commande Générer et archiver pour vous assurer que le nouveau profil est appliqué. (Au moins, c'était nécessaire pour moi.)
Brent Royal-Gordon
12

Dans mon cas, j'ai activé les mêmes fonctionnalités dans Xcode que dans les services d'application de developer.apple.com. Cela fonctionne pour moi

entrez la description de l'image ici

entrez la description de l'image ici

novecapa
la source
C'est ce qui a fonctionné pour moi - je ne peux pas les désactiver dans le centre de développement, et il semble que la compilation iOS 7.0 avec Xcode 5.1.1 les oblige à activer.
Matt H
6

Dans mon cas (désolé), j'ai changé "Équipe" sur "Aucun" dans -> Général -> Identité

Dans un autre cas, j'ai dû passer cette identité de "Aucun" au compte développeur gérant les identités et les profils.

Xcode gâche parfois énormément la signature de code, semble-t-il. Ou bien, nous, simples mortels, ne sommes tout simplement pas assez intelligents pour comprendre ce qu'il fait, bien sûr. N'abandonnez pas, nous subissons tous parfois des tortures de signature de code!

RickJansen
la source
Wow, tu as sauvé ma soirée, merci. Mais ... pourquoi cela a-t-il fonctionné?
Martin
Pourquoi cela a-t-il fonctionné… Je pense que Xcode est un produit extrêmement complexe, et les identités et le profilage des dispositions ont été épineux depuis le début. Je pense que personne n'a plus une compréhension complète des inter-relations. Je ne. Parfois, c'est des essais et des erreurs, comme le montre ce fil.
RickJansen
5

Dans mon cas, j'ai dû définir le bon profil de provisionnement pour la version, puis redémarrer Xcode. Avant de redémarrer, il avait le même profil de provision et ne fonctionnait pas. Ainsi, parfois un redémarrage peut faire des miracles. Peut-être que cela aide quelqu'un.

Beny Boariu
la source
3

Si quelqu'un utilise un GameCenter, vérifiez cette section dans votre cible. J'ai travaillé avec un vieux projet et il y avait 2 erreurs (mais tout fonctionnait bien). Le désactiver et le réactiver a résolu ce problème.entrez la description de l'image ici

Très probablement, cette action ajoute le droit Game Center à l'ID d'application et la gère elle-même.

béryllium
la source
3

1.Allez dans le dossier du projet, supprimez les fichiers * .entitlements. 2.Ensuite, allez yo dans la cible du projet xcode -> paramètres de construction -> droits de signature de code - supprimer les valeurs 3.Nettoyer 4.Exécuter

Vlad 25 WLD
la source
3

Ah, cette erreur glorieuse. Pour moi, chaque fois que je vois cette erreur, je vérifie les choses suivantes:

1. Autorisez XCode à accéder à tout moment aux informations de votre profil d'approvisionnement - Si XCode continue de demander lorsque vous le démarrez d'avoir accès aux fichiers privés de votre ordinateur afin qu'il puisse obtenir des informations de profil d'approvisionnement avec les options pour autoriser l'accès toujours, pas maintenant, ou juste une fois - réglez-le sur ALWAYS ALLOW access

2. Si vous avez d'anciens fichiers de droits dans votre projet, supprimez-les ainsi que tout signe de leur présence - si vous voyez un fichier .entitlements dans votre projet, supprimez-le (ou supprimez au moins la référence à celui-ci si vous n'êtes pas sûr vous êtes prêt à le supprimer), puis assurez-vous que la ligne «Droits de signature de code» sous la section «Signature de code» dans les paramètres de construction est vide

3. Vérifiez vos services d'application en ligne et associez-les à vos services dans XCode pour l'application - Accédez au centre des membres Apple et vérifiez l'ID d'application de votre application, cliquez sur l'application pour voir ses «services d'application» et voyez ce que vous ont vérifié, puis accédez à XCode et vérifiez votre section `` Capacités '' pour vous assurer que les deux ont la même liste de services Apple sur les deux

4.Assurez-vous d'attribuer un profil de provisionnement valide à votre application avant de valider - vérifiez à nouveau votre profil de provisionnement pour votre application dans le centre des membres Apple, assurez-vous qu'il n'est pas expiré, qu'il possède le bon identifiant d'application avec le bon identifiant et la distribution . Téléchargez et cliquez sur le nouveau profil d'approvisionnement pour vous assurer que XCode l'a, ou allez dans XCode> Préférences> Comptes> cliquez sur votre compte et `` Afficher les détails '', puis cliquez sur le bouton du coin inférieur pour synchroniser tous les profils avec XCode. Vous devriez avoir le profil disponible pour sélectionner maintenant dans la section «Signature de code». Une fois que vous avez le bon profil d'approvisionnement, vous pouvez définir les lignes «Identité de signature de code» sur l'option appropriée pour ce profil d'approvisionnement.

Remarque - si vous créez un certificat de distribution, il peut être utile de définir toutes les lignes `` Identité de signature de code '' sur l'identité que vous utilisez pour la distribution, y compris les lignes de débogage

5. SI TOUS LES AUTRES ÉCHOUENT - Nettoyez votre projet et redémarrez XCode et un peu de magie Apple peut très bien fonctionner la prochaine fois que vous ouvrez votre projet et essayez de valider

ColossalChris
la source
2

Si vous construisez un ancien projet 3.1.5, Xcode 5 a quelques bogues qui rendent malheureusement la réponse de Benjamin impossible, car il n'y a pas de profils de provisioning parmi lesquels choisir. Après de nombreuses heures tardives de lecture tourmentée des fichiers de projet Xcode, j'ai trouvé cette solution qui a fonctionné pour moi:

  • Dans le volet Utilitaires (à droite) dans Xcode 5, sous Document de projet, passez de compatible Xcode 3.1 à Xcode 3.2 compatible.
  • Saisissez le nom de votre organisation.
  • Fermer le projet.
  • Ouvrez votre fichier de projet, par exemple open -a TextEdit path/to/name.xcodeproj/project.pbxproj
    • Supprimez les deux clauses de distribution ( isa=XCBuildConfiguration).
    • Supprimez les deux lignes d'accompagnement dans buildConfiguration (une dans PBXNativeTargetet une dans PBXProject XCConfigurationLists)

Vous êtes maintenant prêt à rouvrir, archiver et soumettre à l'App Store - voilà! Ça marche encore!

Comment je pense que ça marche

Je suppose que cela fonctionne parce qu'Apple quelque part le long de la ligne a décidé de supprimer le besoin de toute configuration de distribution séparée, ce qui est une bonne chose. Lorsque j'archive, Xcode code automatiquement les signes pour la distribution. C'est la façon dont cela aurait dû être implémenté en premier lieu, c'est juste dommage qu'Apple ne puisse pas intégrer l'auto-migration dans l'EDI; au lieu de cela, ils nous obligent, les développeurs, à passer des décennies pour faire fonctionner ces choses.

Jonas Byström
la source
2

Cela fait plus d'un jour que je lutte avec ce problème, essayant toutes sortes de solutions suggérées ici et ailleurs sur Internet. Rien n'a fonctionné ...

Mais, j'ai finalement réussi à résoudre le problème!

Le problème que j'avais était avec une ancienne application que je n'ai pas touchée depuis plus de 3 ans, et maintenant j'étais sur le point de publier une mise à jour tant attendue. Depuis que j'ai publié l'application, Apple a mis à jour le fonctionnement des certificats et de l'identifiant d'application. Ils ont introduit le concept de Team Id qu'il semble recommandé d'utiliser. En particulier, le site «Certificats, Identifiants et Profils» d'Apple a connu de nombreux changements depuis.

Là, j'ai réalisé que le profil de provisionnement que j'utilisais pour la distribution App Store était connecté à l'identifiant de l'application, ED8xxxxxxx.com.rostsolutions.*mais en regardant l'identifiant de l'application pour le jeu que j'allais soumettre, j'ai remarqué que l'identifiant de l'application était ATMxxxxxxx.com.rostsolutions.Swisch. Le préfixe de l'identifiant d'application ne correspond donc pas! Cela semblait être la racine du problème. J'ai donc créé un nouveau profil d'approvisionnement connecté à l'identifiant d'application ATMxxxxxxx.com.rostsolutions.Swisch. En utilisant ce profil de provisioning, j'ai soumis avec succès mon application à l'App Store et maintenant je crois que tout le reste fonctionne bien aux côtés d'Apple.

(J'ai d'abord essayé de me connecter au nouveau profil de provisioning à l'ID générique à la ATMxxxxxxx.com.rostsolutions.*place, mais cela ne semblait pas fonctionner).

Mais ce qui me laisse perplexe, c'est que lorsque je regarde l'ancienne application dans iTunes Connects et que je vais aux détails binaires, il est dit que l'identifiant de l'application est ED8xxxxxxx.com.rostsolutions.Swisch. Alors, pourquoi la page "Certificats, identifiants et profils" répertorie-t-elle l'ID d'application ATMxxxxxxx.com.rostsolutions.Swisch?

Daniel
la source
Merci d'avoir publié ce Daniel. Je constate un comportement similaire qui empêche l'utilisation des certificats et des profils souhaités. Chaque fois que je télécharge un certificat ou que j'autorise Xcode à le faire, un ID d'équipe `` fantôme '' apparaît qui `` brise '' la capacité (utilisation) d'iCloud dans mon cas. Pas encore de résolution pour moi.
David
OMG! Cette même merde nous arrive avec plus de 50 applications! Ugh l'équipe fantôme nous tue. Pourquoi Apple Pourquoi! ????
Sukima
2

Mon problème a été résolu en supprimant mon identifiant Apple de Préférences-> Comptes, puis en l'ajoutant à nouveau. Ensuite, tous mes fichiers de profil d'approvisionnement sont apparus sur le panneau de l'utilitaire Afficher les détails. J'ai choisi par erreur "Profil de provisionnement de l'équipe Mac: *" au lieu du profil de provisionnement de distribution réel pour le projet en pensant qu'il s'agissait d'une sélection générique. Les fichiers de provisioning doivent être spécifiques au projet. Oh, et BTW, assurez-vous que votre profil d'approvisionnement dispose des droits appropriés (par exemple, Maps). J'ai réussi à publier une application avec OSX Maps sans l'autorisation et Apple l'a approuvée - mais aucune carte n'apparaît dans la version de production!

Brainware
la source
1

Dans mon cas, j'ai eu le même problème, ma solution était de changer le 'Release Provisioning Profile' dans les paramètres de construction avant de faire l'archivage. Je fais cela deux fois, une fois pour la distribution App Store et une autre pour la distribution Ad Hoc. J'ajoute également un commentaire sur mes archives. Ma conclusion est qu'il y a quelque chose de cassé dans la "re-signature des archives".

Hector
la source
1

Il existe un très bon tutoriel pour résoudre ce problème sur ce site Web.

Il indique que ce problème peut survenir lorsque l'identifiant de votre bundle de projets est différent de celui que vous avez entré sur le site Web iTunes Connect .

130e13a
la source
1

Je pense que xcode 5 utilise "release" au lieu de "distribution" que vous pouvez créer vous-même.

superarts.org
la source
1

Si tout ce qui précède n'a pas fonctionné (dans mon cas après quelques jours, je n'ai pas eu de chance de tout essayer), je n'ai qu'une seule application Mac. SOYEZ PRUDENT AVEC REVOKE!

1) Révoquez à la main tous les "Mac App Distribution" et "Mac Installer Distribution"
2) Nettoyez les certificats pertinents et les clés ouvertes dans le trousseau ( Attention: exportez avant la suppression)
3) Redémarrez Xcode 4) Allez dans (dans Safari) developer.apple .com -> certificats etc. 5) Créer CertificateSigningRequest.certSigningRequest dans Keychain-> assistant certificat
6) Créer la main sur les deux developer.apple.com "Mac App distribution" et "Mac Installer distribution" avec votre * .certSigningRequest
7) Provisioning Profils -> Distribution -> créer / corriger une disposition personnalisée pour l'AppStore (je l'ai spécialement nommée "profil de provision Mac pour l'AppStore"
8) Xcode -> Paramètres -> Compte -> Votre compte ->Actualiser 9) Xcode Clean -> Archiver -> Valider

WINSergey
la source
1

J'ai été aux prises avec un problème similaire (je construisais pour une distribution Ad-Hoc). La seule chose qui a changé depuis le dernier déploiement réussi est l'ajout de deux appareils au profil d'approvisionnement.

Après avoir vérifié et triplé tous les paramètres de construction, j'ai régénéré le profil d'approvisionnement (sans rien changer), re-téléchargé et cela a bien fonctionné.

Alors remarquez à moi-même: s'il n'y a pas d'explication logique, vous pouvez toujours essayer le bon vieux vaudou informatique.

Je recommande également l' utilitaire de configuration iPhone , qui, malgré son nom, est utile pour vérifier les profils d'approvisionnement que vous avez sur l'ordinateur.

Tomek Cejner
la source
1

ERREUR ITMS-9000: «Ce bundle n'est pas valide. Les nouvelles applications et mises à jour d'applications soumises à l'App Store doivent être créées avec des versions publiques (GM) de XCode 5.1.1 ou version ultérieure et du SDK iOS 7. Ne soumettez pas d'applications créées avec un logiciel bêta.

hi0001234d
la source
0

Si plusieurs développeurs utilisent le même compte du centre des membres. L'un d'eux ne peut pas utiliser un certificat créé par d'autres car il a utilisé une demande de certificat créée à l'aide de son ordinateur.

Vous devez utiliser un certificat que vous avez créé (demande de certificat créée à l'aide de votre ordinateur).

Alternative, leur a dit de vous envoyer le profil de développeur. pas sûr du nom. pour utiliser un certificat créé sur un autre ordinateur.

hasan
la source
0

Les droits de signature de code se produisent parce que votre ressource ne contient pas de fichier de droits dans les ressources. À votre santé

Shauket Sheikh
la source
-1

J'ai eu le même problème, mais rien d'écrit ici n'a fonctionné pour moi. Cependant, j'ai trouvé un moyen simple qui a fonctionné pour moi. Voici comment procéder:

1) Dans les paramètres de création de votre projet et de vos cibles, choisissez "Aucun" pour tous les profils de provisioning, et choisissez "Ne pas signer de code" pour toutes les identités de signature de code.

2) Maintenant, choisissez votre cible et accédez aux paramètres de construction. Dans le paramètre Code Signing Identity Release, choisissez «iOS Distribution» pour «Any iOS SDK». Et puis, dans le paramètre Provisioning Profile Release, choisissez votre profil de distribution pour "Any iOS SDK". Après cela, votre paramètre de libération d'identité de signature de code devrait automatiquement passer à «Distribution iPhone».

3) Archivez votre build et validez. Maintenant, cela devrait fonctionner correctement. C'est tout!

jimpavloff
la source