Débogage iPhone: Comment résoudre `` échec de l'obtention de la tâche pour le processus ''?


158

Je viens d'ajouter un profil d'approvisionnement à XCode (nécessaire pour prendre en charge les notifications et l'achat d'applications), configurer selon les besoins la configuration de construction pour la distribution ad hoc et essayé d'exécuter l'application sur l'appareil (je l'ai fait plusieurs fois dans le passé , sans aucun probléme).

L'application est installée, mais elle ne démarre pas. Sur la console, je vois le message suivant:

Error launching remote program: failed to get the task for process 82.
Error launching remote program: failed to get the task for process 82.
The program being debugged is not being run.
The program being debugged is not being run.

Cependant, si je lance l'application sur l'appareil manuellement, cela fonctionne comme prévu. J'ai récemment installé le dernier XCode 3.2 pour Snow Leopard. Est-ce un bogue connu de cette version de XCode ou est-ce que je fais quelque chose de mal?

EDIT: Cela fonctionne très bien avec la distribution de version en utilisant le profil de provisioning de développement. J'ai vérifié à nouveau le profil de provisioning ad hoc pour m'assurer qu'il inclut l'appareil que j'utilise.


cela peut également aider: allez dans Organisateur -> Projets -> Supprimer et nettoyer DerivedData. Assurez-vous que toutes les signatures dans Project et Target sont définies de manière cohérente et correcte - cela a aidé dans mon cas ....
user387184

Réponses:


110

J'ai eu des problèmes de débogage des binaires sur l'appareil via XCode lorsque l'application comprend un fichier Entitlements.plist, qui n'est pas nécessaire à installer sur l'appareil pour le débogage. En général, j'ai inclus ce fichier pour les versions de version (où il est requis pour l'App Store) et je l'ai supprimé pour le débogage (afin que je puisse déboguer l'application à partir de XCode). C'est peut-être votre problème ici.

Mise à jour : depuis (au moins) août 2010 (SDK iPhone 4.1), Entitlements.plist n'est plus nécessaire d'inclure dans votre application dans de nombreux cas (par exemple, distribution via l'App Store.) Voir ici pour plus d'informations sur les cas où Entitlements.plist est requis:

IMPORTANT: un fichier de droits n'est généralement nécessaire que lors de la création pour la distribution ad hoc ou de l'activation du partage de données du trousseau. Si aucune de ces conditions n'est vraie, supprimez l'entrée dans Droits de signature de code. (c'est moi qui souligne)


Vous avez raison, j'ai vérifié que c'est bien la valeur booléenne get-task-allow définie sur false dans Entitlements.plist qui empêche le débogage. Je vous remercie.
Massimo Cafaro

1
Pour info, j'ai eu exactement le même problème et la chose qui a résolu le problème a été l'ajout du fichier de droits avec le paramètre get-task-allow défini sur OUI ... donc si vous rencontrez le même problème et que vous n'avez pas le fichier des droits, essayez de l'ajouter ...: P
Alex Zak

À partir d'iOS 8.1.3, le fichier.
Roy K

289

Le profil ad hoc ne prend pas en charge le débogage. Vous devez déboguer avec un profil de développement et utiliser le profil Ad-Hoc uniquement pour distribuer des copies non débuggables.


À ma connaissance, je n'ai pas vu ces informations sur le portail du programme de développement. Mais mon commentaire à fbrereto explique pourquoi il en est ainsi: nous n'avons pas le fichier Entitlements.plist ni dans les configurations de débogage ni dans les versions de version.
Massimo Cafaro le

5
J'ai eu le même problème après avoir accidentellement défini l'identité de signature de code sur une distribution iPhone dans XCode 4
cpungaliya

1
comment puis-je repasser le profil en débogage si je clique simplement sur "démarrer"
spankmaster79

Juste un autre de ces petits pièges qu'Apple a mis en place pour vous. Juste que cela se produise après avoir refait tous mes profils et certificats grâce à un bug du portail ... soupir. Merci pour l'information, j'ai corrigé mon problème.
n13 le

C'était la réponse à mon problème. Je n'avais rien à faire avec les droits.
DOOManiac

37

J'ai eu le même problème, mais je l'ai résolu en suivant les étapes suivantes:

  1. Assurez-vous que vous avez sélectionné le débogage plutôt que la libération.
  2. Dans les configurations de débogage, dans les paramètres du projet, vous devez avoir sélectionné le profil du développeur et pas besoin de spécifier le plist des droits.
  3. Le même paramètre se trouve également sous: Cibles:, sinon modifiez-les manuellement pour la configuration de débogage. Ça va marcher.

Bonne chance.


La raison pour laquelle cela a fonctionné est presque certainement que votre configuration de débogage a get-task-allow défini dans Entitlements.plist alors que celle de Release ne le fait pas - c'est pour empêcher les gens de joindre le débogueur à la copie qu'ils obtiennent de l'App Store (voir- aussi la réponse de Kai ci-dessous à propos du réglage sur oui pour le faire fonctionner ..)
dsmudger

Je l'ai fait pour moi. D'une manière ou d'une autre, la version était définie sur «release» et les profils de version n'étaient pas configurés correctement.
KPK

19

Cela m'a pris un certain temps à comprendre.

Si vous utilisez une distribution / ad hoc / profil, vous ne pouvez pas le tester via xcode. Vous obtiendrez l'erreur: le programme en cours de débogage n'est pas en cours d'exécution.

Vous pouvez créer l'application, aller dans le dossier produits de votre application dans xcode, cliquer sur le fichier avec le nom de votre projet et choisir révéler dans le finder. Vous pouvez faire glisser cette application dans iTunes et la synchroniser et à ce stade, vous pouvez tester votre application sur votre appareil.


Ouais, c'était mon problème. Je n'avais pas de fichier de droits, mais j'avais basculé ma configuration de build de débogage vers un profil de distribution. Le passage à un profil de développement a tout résolu.
vocaro

1
Je souhaite que XCode soit plus franc à ce sujet. Il n'est pas du tout évident que vous ne puissiez pas tester une distribution construite sur un périphérique tout en étant connecté à XCode. C'est un cas d'utilisation courant.
user798719

13

Si vous obtenez une telle erreur, la seule raison pourrait être que vous utilisez un profil de distribution plutôt qu'un profil de développement dans Xcode ou une propriété de droit manquante. Si vous n'utilisez pas Entitlements.plist, la seule erreur possible pourrait être que l'application est en train d'être empaquetée avec un profil de distribution. Vous pouvez le vérifier en confirmant les journaux de construction. Pour modifier cela, accédez au paramètre de génération du projet et vérifiez le paramètre d'entité de signature de code. Pour que le débogage fonctionne, ce paramètre doit être un profil de développeur pour la configuration que vous utilisez actuellement.

https://developer.apple.com/library/ios/#qa/qa1682/_index.html

Pour des résultats instantanés, supprimez tous les profils d'approvisionnement mobile de xcode et installez le profil de développeur que vous avez l'intention d'utiliser.


13

Presque 2h sur ce problème! Et finalement je l'ai résolu en remplaçant le

Développeur iPhone

à

Développeur iPhone: Nom de mon compte de développement

pour le débogage CODE_SIGN_IDENTITY:

  1. Sélectionnez la cible du projet
  2. Paramètres de construction
  3. Recherche par "signe de code"
  4. Modifiez la ligne de débogage de la section CODE_SIGN_IDENTITY avec «iPhone Developer: My Dev Account Name» , pas seulement «iPhone Developer» .

Je ne sais pas pourquoi ça marche, mais ça marche! Au moins pour moi!


Environnement: Xcode 5.0 (5A1412).


cela a fonctionné pour moi aussi, merci. a dû manipuler exactement quelles identités utiliser, mais il a finalement aimé un certain combo. Xcode 6 a vraiment besoin d'une fonction de "correction automatique" pour ce genre de choses, beaucoup de travaux ménagers pour lesquels je n'ai pas le temps !!
John Contarino

1
Juste pour ajouter à cela, ce que j'ai fait était similaire, mais différent - j'ai changé le profil pour être le profil de l'équipe (qui est utilisé pour le débogage), ce qui a défini le signataire du code pour être "automatique" - dans XCode 5+, vous devriez vraiment être en sélectionnant le profil d'une version et en le laissant décider du signataire à utiliser en fonction de cela.
Kendall Helmstetter Gelner

@KendallHelmstetterGelner merci, cela pourrait être utile aux autres! : D
Kjuly

Je dois également ajouter que j'ai changé le profil de l'équipe pour la version "Debug", qui est utilisée pour s'exécuter sur un appareil à partir de XCode (sauf si vous modifiez les paramètres du schéma)
Kendall Helmstetter Gelner

1
Cela a résolu mon problème avec ce problème sans rien faire d'autre que la reconstruction avec une identité de signature de code différente. Je vous remercie! Dans mon cas, j'utilisais une identité de distribution ad hoc.
Sean Michael Dorian

12

Vérifiez votre section de signature de code. Assurez-vous que la signature de code est iPhone.


Cela a fait le mien - Pour une raison quelconque sur ma cible, l '«équipe» avait changé en «Aucun» - le changer en arrière l'a trié. Cheers
Ralpharoo

9

Ouvrez Entitlements.plist et définissez la valeur booléenne get-task-allow sur YES - le débogueur peut s'attacher maintenant!


ya j'ai essayé cela plusieurs fois et je ne comprends pas pourquoi cela ne résout pas le problème. ce serait la meilleure méthode si vous vouliez toujours incorporer testflightapp
owen gerig

I mon schéma d'exécution est configuré pour déboguer. Seule cette solution l'a résolu pour moi! Je vous remercie.
Pieter

Merci, aidez-moi vraiment !!
Amir Hudani

4

Allez dans Modifier les schémas et sous Exécuter -> Info -> Configuration de la construction, passez d'Ad-Hoc à Debug. Cliquez sur OK pour enregistrer.


1

Il se peut que vous ayez un profil de développement expiré sur votre téléphone.

Mon profil d'approvisionnement de développement a expiré il y a plusieurs jours et j'ai dû le renouveler. J'ai installé le nouveau profil sur mon téléphone et j'ai affiché le même message d'erreur lorsque j'ai essayé d'exécuter mon application. Lorsque j'ai regardé les paramètres de profil sur mon téléphone, j'ai remarqué le profil expiré et je l'ai supprimé. Cela a effacé l'erreur pour moi.


1

J'ai reçu cette erreur lorsque j'ai essayé de lancer l'application à partir de Xcode car je pensais que j'avais sélectionné le profil de distribution uniquement. La construction a réussi, j'ai donc créé un fichier .ipa. J'ai utilisé testflightapp.com pour exécuter l'application. Vous pouvez également utiliser iTunes.


1

Comme indiqué par Buffernet, vous ne pouvez pas utiliser un profil d'approvisionnement de distribution pour déboguer. Lorsque je suis passé à un profil de provisionnement de développeur, j'ai reçu l'erreur «Un profil de provisionnement valide pour cet exécutable était introuvable».

Un rapide google pour cela m'a conduit à l'article ci-dessous. À partir de là, j'ai réalisé que je n'avais pas de profil d'approvisionnement de développement valide car mon iPhone n'avait pas été ajouté au portail d'approvisionnement et à tous les autres éléments impliqués.

Assurez-vous d'exécuter un profil d'approvisionnement de développeur iPhone et que votre appareil a été ajouté au portail d'approvisionnement!

http://iosdevelopertips.com/xcode/a-valid-provisioning-profile-for-this-executable-was-not-found.html


0

Oui, les profils de provisioning qui sont à des fins de distribution, c'est-à-dire les profils de provisioning de Distrutions ne prennent pas en charge le débogage et donnent cette erreur. Créez et utilisez simplement le profil d'approvisionnement de débogage (prenez-en soin lors de la création d'un profil d'approvisionnement à partir du compte developer.apple.com).


0

Je viens de changer le nom de mon bundleIdentifier, cela semble faire l'affaire.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.