46 votes

Réception du message "Une ressource signée a été ajoutée, modifiée ou supprimée" lorsque vous essayez de déboguer une application sur l'iPhone.

En essayant de déboguer une compilation créée à l'aide du SDK 3.2 sur un appareil iPhone, je reçois le message "Une ressource signée a été ajoutée, modifiée ou supprimée".

Je peux nettoyer, reconstruire, puis installer sans erreur, mais si j'essaie d'installer sans nettoyer, l'erreur s'affiche.

Quelqu'un a-t-il une idée de la cause de ce problème ?

0 votes

Je continue à obtenir la même chose. Avez-vous trouvé une autre solution que de faire Build > Clean All Targets ?

0 votes

Rien encore, si je trouve quelque chose, je répondrai moi-même.

0 votes

J'obtiens la même erreur dans la dernière combinaison Xcode/SDK à partir d'aujourd'hui. (Xcode 4.3.2)

34voto

Jernej Strasner Points 226

J'ai trouvé une solution de contournement pour le bug.

Si vous supprimez le fichier .app dans build/Debug-iphoneos/ avant de construire pour l'appareil, l'application sera installée sans erreur. Il existe un moyen simple de le faire avant chaque compilation.

Assurez-vous que vous avez sélectionné "Device" dans le menu déroulant de présentation. Dans XCode, allez dans Projet > Nouvelle cible... Puis trouvez "Shell script target" sous MacOSX/Other Nommez-la et ajoutez-la au projet actuel

Maintenant, dans le panneau de navigation de gauche, sous les cibles, développez votre cible nouvellement créée et double-cliquez sur Run script. Dans la fenêtre qui s'ouvre, remplacez "# shell script goes here" par "rm -fr build/Debug-iphoneos/*.app" (sans les guillemets). Maintenant, ouvrez vos préférences de cible principale et sous Dépendances directes ajoutez votre cible nouvellement créée. Construisez et allez-y :)

0 votes

Désolé, ça ne marche pas ici. J'ai effacé tout le répertoire de construction et je l'ai toujours.

0 votes

J'ai trouvé que cela fonctionnait pour moi. Si vous ne voulez pas une autre cible, alors ajouter le script à la cible actuelle fonctionne aussi (onglet phases de construction). Assurez-vous simplement que c'est avant la copie des ressources du bundle.

4 votes

@jernej-strasner : En fait il suffit de "toucher" n'importe quel fichier source, donc un script plus efficace serait . touch "${PROJECT_DIR}/MySources/main.m"

25voto

Tibidabo Points 10510

Cette erreur se produit lorsqu'il y a un caractère spécial dans le nom du produit . Dans mon cas, c'était un " ?"

Si vous modifiez le nom du produit, il met automatiquement à jour le "nom du groupe" et le "nom d'affichage du groupe". C'est donc souvent le meilleur choix pour renommer une application.

Si vous voulez inclure des caractères spéciaux dans le nom de l'application, vous devez le faire manuellement. renommer le "Nom de l'ensemble" et le "Nom d'affichage de l'ensemble".

Nom de l'ensemble : Il s'agit du nom réel du paquet d'applications dans le système de fichiers, tel que "Awesome App.app". Il n'est généralement pas visible pour l'utilisateur.

Nom d'affichage de l'offre groupée : C'est un nom court affiché sous l'icône de l'application sur l'appareil. Comme le nom de l'ensemble sera tronqué en "Awes tion", vous avez la possibilité de choisir un nom plus court qui convient mieux, comme "Awesome App". Ce nom doit être similaire à celui de l'App Store (défini dans iTunes Connect).

0 votes

J'ai sauvé ma journée ! C'était un foutu " ?" pour moi aussi.

2 votes

Faux, le nom du bundle (CFBundleName) n'est pas le nom de l'application dans le Store. C'est le nom de l'application sur le système de fichiers (avec .app à la fin). Les utilisateurs ne voient normalement jamais le CFBundleName.

0 votes

@Jean-PhilippePellet J'ai mis à jour la réponse. Merci de l'avoir mise en évidence !

12voto

davidcann Points 1005

Il s'agit clairement d'un bogue dans le SDK 3.2, mais je ne veux pas rétrograder. J'ai trouvé que faire un nettoyage en poussant Command+Shift+K entonces Return est assez rapide avant de pousser Command+R à construire.

0 votes

J'ai eu ce problème à chaque fois que j'ai construit pour le dispositif depuis la mise à jour du SDK 3.2. C'est ennuyeux, mais assez facile à contourner.

0 votes

Facile à dire si vous avez un petit espace de travail. Le nettoyage et la reconstruction ajoutent environ une minute à mon temps de lancement, ce qui, en l'espace d'une journée, peut représenter une heure perdue à attendre que l'application se reconstruise.

2voto

drekka Points 10020

(SOLVÉ) C'est une question bizarre. J'ai essayé tout ce que j'ai pu trouver. Finalement, j'ai changé le nom du produit de "Unit Tests (device)" en "Device Unit Tests" - en supprimant les parenthèses. Maintenant, tout fonctionne. Les espaces qu'il contient ne semblent pas poser de problème.

Précédemment sur stackoverflow : Je viens de rencontrer ce bogue avec deux projets de bibliothèques statiques. L'un d'eux se construit et se teste à l'aide du programme d'exécution de tests GHUnit sur l'appareil sans problème. L'autre projet ne s'installe pas et obtient cette erreur. Cela signifie que c'est quelque chose qui est différent entre ces deux projets. Jusqu'à présent, j'ai essayé d'effacer le répertoire de construction, de supprimer les espaces du nom de l'exécutable et de procéder à divers nettoyages et constructions comme suggéré ici.

1voto

Nils Points 11

Même chose pour moi, j'ai pensé que cela avait quelque chose à voir avec les cibles multiples etc. parce que j'ai changé beaucoup de choses ici. Mais il est fort possible qu'il s'agisse d'un bogue dans la version 3.2.2, car je n'ai pas fait de tests approfondis dans cette version du sdk avant les changements massifs de cibles dans mon projet.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X