web-dev-qa-db-fra.com

L'exécutable a été signé avec des droits non valides

Je rencontre un problème de distribution ad-hoc sur mon iPhone. J'ai développé une application avec SDK 3.0. J'ai une licence de développeur. J'ai ajouté des certificats et des profils d'approvisionnement dans mon projet. Donc, pas de problème avec ça.

Mais lorsque j'essaie d'installer l'application sur mon iPhone, le projet est compilé, puis le message d'erreur suivant s'affiche: "The executable was signed with invalid entitlements" dans la fenêtre de l'organiseur. Est-ce que je manque quelque chose? J'ai mis à niveau mon iPhone depuis la version 2.2.1 et téléchargé le dernier SDK d'Apple.

S'il vous plaît aidez-moi avec ce problème.

71
pJosh

Le programme du portail contient de très bonnes instructions. Si vous vous connectez à

http://developer.Apple.com/iphone

Cliquez ensuite sur Distribution à gauche, puis sur le bouton

Création et téléchargement d'un profil d'approvisionnement de distribution pour une distribution ad hoc

lien en bas.

Voici le bit clé:

Pour la distribution ad hoc, procédez comme suit:

  • Dans le menu Fichier, sélectionnez Nouveau fichier -> iPhone OS -> Signature de code -> Droits. Nommez le fichier "Entitlements.plist", puis cliquez sur "Terminer". Ceci crée une copie du fichier d’autorisations par défaut dans le projet.
  • Sélectionnez le nouveau fichier Entitlments.plist et décochez la propriété “get-task-allow”. Enregistrez le fichier Entitlements.plist. (dans Xcode 4, get-task-allow s'appelle "peut être débogué")
  • Sélectionnez la cible et ouvrez l'inspecteur de paramètres de construction. Dans le paramètre de construction "Code Signing Entitlements", entrez le nom de fichier du nouveau fichier Entitlements.plist, y compris son extension. Il n'est pas nécessaire de spécifier un chemin sauf si vous avez placé le fichier Entitlements.plist ailleurs que dans le niveau supérieur du projet.
  • Cliquez sur "Construire". (Remarque: votre fichier binaire doit contenir une icône carrée aplatie de 57 x 57 pixels, qui affiche une image carrée. Cette icône s'affiche sur l'écran d'accueil de l'iPhone ou de l'iPod touch.)
53
John

Cette erreur peut également se produire si vous essayez de profiler une application pour laquelle le périphérique n'est pas inclus dans le profil de provisioning.

Assurez-vous que votre périphérique est inclus dans le profil de provisioning de développement que vous souhaitez utiliser. D'une certaine manière, le message d'erreur est trompeur. Mes droits étaient réellement ok.

34
TTT

J'ai constaté que "get-task-allow" devait être vérifié pour les versions de développement, mais décoché pour les versions de distribution. Le moyen le plus simple de réaliser cela (AFAIK) est d’avoir deux fichiers d’autorisations dans votre projet: Entitlements.plist et EntitlementsDebug.plist - et de référencer celui qui convient dans les paramètres de projet de construction pour les diverses configurations de votre projet.

14
gumbypp

Les autorisations de signature de code ne sont plus nécessaires pour les générations Ad Hoc dans Xcode 4 - voir les notes détaillées dans Note technique Apple TN225

6
snibbe

Cela est dû au fait que votre périphérique sur lequel vous exécutez votre application n'est pas sélectionné avec votre profil d'approvisionnement.

Il suffit donc de passer Certificats, identifiants et profils sélectionnez votre iOS Provisioning Profiles _ cliquez sur edit puis sélectionnez votre appareil

enter image description here

4
Rajneesh071

Si vous vous retrouvez un jour dans la situation, vérifiez que "get-task-allow" semble être nécessaire pour déployer votre version de débogage (!) Sur votre téléphone, vérifiez ceci:

a) Vérifiez le paramètre de construction. Il ne doit y avoir aucune entrée dans "Droits de signature de code" pour le débogage. B) Supprimez temporairement Entitlements.plist et créez votre version de débogage. S'il se plaint d'un Entitlements.plist manquant, alors vous avez probablement la même situation, je devais me battre aujourd'hui. c) Générez à nouveau avec Entitlements.plist et activez "get-task-allow". Si cela fonctionne maintenant, vous avez probablement le même problème:

Après avoir bricolé avec de nouveaux profils, je n’ai pas pu déployer ma version Debug sur le téléphone. Ad Hoc était bien. J'ai vérifié a) - vide .. Hmm. J'ai vérifié b) - se plaint. c) - travaillé ...

Après tout, j’ai examiné project.pbjproj dans un éditeur et, bien que l’interface utilisateur ait prétendu qu’il n’y avait pas d’entrée pour "Droits de signature de code", il y en avait une dans la section Débogage. Je l'ai vidé et c'était fait.

4
neil

Je viens de passer trois heures passionnantes à lutter contre cela. Je viens de mettre à niveau un projet à la version 4.2 et, pour une raison quelconque, cela ne fonctionnerait tout simplement pas.

J'ai finalement supprimé le fichier Entitlements.plist puis créé un nouveau.

Fichier> Nouveau fichier> Signature du code> Droit

Nommez le fichier Entitlements.plist

Assurez-vous qu'il est dans le groupe Ressources dans xCode.

Le type get-task-allow BOOL n'a pas été inséré dans le fichier Entitlements.plist. Je l'ai ajouté, vérifié, sauvegardé, décoché, sauvegardé. Cela m'a fait me sentir mieux.

J'ai ensuite supprimé les profils Adhoc et Release que j'avais créés. Re-téléchargé à partir du portail d'approvisionnement et les replacer dans l'organiseur xCode.

Je suis ensuite allé dans les paramètres de construction et je me suis assuré que les profils appropriés étaient attribués aux profils de débogage et de libération.

J'ai ensuite changé le pour Release/Device. Appuyez sur le bouton de construction et cela a fonctionné.

Je ne sais pas pourquoi.

2
Gerald

Dans Xcode 5.1, si vous allez dans Préférences -> Comptes -> Afficher les détails ...

Assurez-vous que le statut d'identité de signature est valide. Si le message dit Révoqué, cliquez sur le bouton Plus et ajoutez l'identité de signature appropriée: Développement iOS ou Distribution iOS. Xcode le remplacera par un nouveau, valide.

1
TalkLittle

Pour moi, cela a résolu le problème: https://coderwall.com/p/-ckobg

  1. Ouvrez Project.xcodeproj> project.pbxproj
  2. Supprimez toutes les lignes comme celles-ci:
    1. PROVISIONING_PROFILE = ...
    2. "PROVISIONING_PROFILE[sdk=iphoneos*]" = ...
    3. CODE_SIGN_IDENTITY = ...
    4. "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ...
  3. Définissez à nouveau les profils d'approvisionnement et les signatures de code pour la cible
1
Robert

La réponse de John est correcte à 99%. J'ai trouvé que (du moins dans ma configuration), vous devez ouvrir l'inspecteur des paramètres de construction pour le projet . Les paramètres de construction de la cible ne contiennent pas "Droits de signature de code". Peut-être que cela ne fera aucune différence si vous n’avez qu’un seul objectif dans votre projet. Mais si vous avez plusieurs cibles, vous devez accéder aux paramètres de construction du projet. En tout cas, après avoir fait ce que John a dit, ma version de distribution ad hoc a parfaitement fonctionné.

1
iisystems

Je viens de recevoir ce même code d'erreur. Il semble qu'il y ait différentes choses qui causent ceci et donc différentes manières de le réparer.

Dans mon cas, j'avais deux appareils différents portant le même nom (un iPhone 4 et un iPhone 4S). Changer le nom de l'un d'eux a corrigé cette erreur complètement pour moi ...

0
Andy Ibanez

Je viens juste de voir cela arriver à un développeur de l'équipe que j'administre.

Il s'est avéré que son certificat de développeur avait expiré et qu'après son renouvellement, j'ai omis d'ajouter son certificat au profil d'approvisionnement utilisé par son application. enter image description here

0
sean808080

J'essayais d'ajouter le support iCloud à mon application existante, mais j'ai constaté qu'après avoir ajouté des droits et configuré iCloud, mon application ne pouvait plus déboguer.

J'ai réalisé que mon certificat de développement générique iOS avait un APPID différent de celui sur lequel je travaillais. Donc, pour résoudre ce problème, au lieu d’utiliser mon certificat générique, j’ai créé un certificat de développement spécifique pour cet APPID.

J'ai actualisé mon profil d'approvisionnement dans XCode, nettoyé l'application, déconnecté mon périphérique, redémarré XCOde et le périphérique connecté, puis je me suis lancé et tout fonctionne à merveille!

0
theDuncs

pJosh, ça pourrait aider à comprendre. Dans mon cas, mon profil de provisioning d'équipe expirait (le portail de provisioning indiquait qu'il est géré par XCode), ainsi que le profil de test de périphérique de l'application. (Je ne sais toujours pas pourquoi, mais le portail avait un bouton "Renouveler" à côté du profil de l'équipe, mais cela ne ferait rien lorsque je clique dessus.)

J'ai donc supprimé les profils sur le point d'expirer, puis dans XCode, accédez à Organizer (Command-Shift-2), sous Library/Provisioning Profiles, j'ai supprimé les profils expirants. Cliquez ensuite sur "Actualiser" en bas, entrez mon Apple ID) et les identifiants expirés ont été renouvelés.

Enfin, sur ma cible, je suis allé dans Paramètres de construction, Signature du code, et je me suis assuré de sélectionner le profil de provisioning. Voila, maintenant il construit sur mon appareil.

0
Jay Imerman

Je n'avais pas accepté le nouveau contrat de licence mis à jour d'Apple.

En bref: connectez-vous au compte de votre développeur -> profil de -> révision -> lisez le contrat ou demandez à votre avocat de le lire pour vous -> acceptez (à votre guise) -> et cliquez à nouveau sur le profil pour vérifier le statut de votre profil .

Dans mon scénario, l'entité de signature de code valide ne se présentait pas. Lorsque j'ai suivi la procédure ci-dessus, il était visible et j'ai pu exécuter l'application sur l'appareil et/ou créer le fichier iPA sans trop de difficulté.

0
iCodeAtApple

Si ce problème se produisait alors que tout semblait être correctement configuré, les paramètres de construction indiquaient le profil de provisioning correct, la signature de code était correctement configurée, etc.

Un problème est survenu parce que je venais de créer un nouveau schéma et de ne pas avoir régénéré mes CocoaPods pour les nouvelles configurations. Comme vous pouvez le voir sur l'image, la nouvelle configuration ad-hoc pointe sur le Pods.production configuration, au lieu d'un Pods.ad-hoc configuration (et test respectivement)

Demonstrating a mis-match of ad-hoc configuration and scheme configuration

Pour réparer:

  • Définissez la configuration incriminée sur None - les cocoapodes ne généreraient pas les configs si je ne le faisais pas.
  • Fermer XCode
  • Courir pod install
  • Rouvrez XCode et définissez les configurations du nouveau schéma sur les configurations nouvellement générées.

C'est ça!

0
Gavin Miller

J'ai aussi passé plusieurs heures à me battre avec cela. La solution est très simple. Editez votre fichier Entitlements.plist à la racine du répertoire de votre projet. Trouvez la ligne qui dit <key>get-task-allow</key>. En dessous, il devrait être <false/>. Changer cela en <true/>.

0
Brian Knoblauch

Désolé que ce soit très tard, mais je regardais juste cette question et ai trouvé quelque chose qui a fonctionné pour moi. Je suis allé dans PROJECT-> Build Settings et j'ai trouvé la section Code Signing. A côté de debug, mon profil de distribution qui disait Iphone Distribution: MY NAME a été choisi. J'ai plutôt choisi Iphone Developer: MY NAME dans la liste déroulante sous IpodProfile (for bundle identifiers com.myName.myApp qui était le profil d'approvisionnement pour mon appareil. J'espère que cela t'aides!

0
Samuel Noyes