web-dev-qa-db-fra.com

Xcode 4 + iOS 4.3: "Aucun Packager n'existe pour le type d'archive"

Je viens de passer à Xcode 4 et j'essaie de créer une version adhoc d'un projet précédent. Chaque fois que j'utilise l'option "Archive", je me retrouve sans archive du tout dans la fenêtre Organiseur OR il y a une archive, mais il n'y a pas d'option pour la conditionner en .ipa, car Msgstr "Aucun Packager n'existe pour le type d 'archive".

Quelqu'un a-t-il obtenu des builds adhoc fonctionnant sous Xcode 4 pour des projets qui ont été migrés depuis Xcode 3.2?

76
Elver Loho

vous pouvez avoir des projets liés (comme des bibliothèques) dans votre projet principal. Accédez aux paramètres de construction de ces projets et définissez le paramètre "Ignorer l'installation" (catégorie de déploiement) sur "Oui", mais laissez "Ignorer l'installation" du projet principal sur "Non". Générez, archivez et vous devriez pouvoir sélectionner le package ipa.

134
user662105

Merci mais j'avais besoin de 3 étapes pour résoudre entièrement le problème avec le cadre de mon projet:

  1. définissez la propriété Target Build Settings/"Skip Installation" sur "YES" pour chaque projet de dépendance

  2. effacer la propriété "Répertoire d'installation" des paramètres de génération cible pour tous les projets

  3. pour tous les projets, déplacez tous les en-têtes de la section "Phases de construction/Paramètres de construction/Copier les en-têtes" Public/Privé vers le projet

25
PixelEdn

J'ai trouvé qu'une combinaison de ces réponses a résolu le problème. J'ai passé beaucoup de temps à vérifier si Skip Install était réglé sur Oui sur tous les projets liés et il s'est avéré que ce n'était qu'une partie du problème pour moi. Si vous rencontrez ce problème avec Archive, voici les étapes à suivre:

  1. Recherchez l'archive dans l'Organiseur, cliquez avec le bouton droit et sélectionnez Afficher dans le Finder.
  2. Cliquez avec le bouton droit sur le fichier .xcarchive dans le Finder et sélectionnez Afficher le contenu du package.
  3. Recherchez le dossier Produits et voyez ce qu'il contient. Il ne doit y avoir qu'un dossier Applications dans le dossier Produits et le dossier Applications ne doit contenir qu'une seule application iPhone (YourProject.app).

Si, à l'étape 3, vous trouvez une bibliothèque statique (<some-library> .a) directement sous Products ou dans un sous-dossier, accédez à Xcode et sélectionnez le projet qui a produit la bibliothèque statique (vous devriez pouvoir dire quel projet il est basé sur le nom de la bibliothèque statique). Accédez aux paramètres de construction et sélectionnez la cible, puis définissez "Ignorer l'installation" sur "Oui".

Si, à l'étape 3, vous trouvez des fichiers d'en-tête (<some-header> .h) directement sous Produits ou dans un sous-dossier, accédez à Xcode et sélectionnez le projet qui contient ces en-têtes. Vous devriez pouvoir trouver le projet en fonction du préfixe utilisé dans les noms des fichiers d'en-tête. Dans ce projet, accédez aux phases de génération et, dans la section Copier les en-têtes, déplacez tous les en-têtes des sections publique et privée vers la section Projet.

Merci à cette réponse et cette réponse et cette réponse pour m'avoir aidé à résoudre ce problème.

9
Josh Brown

Voici deux autres conseils que nous avons trouvés utiles avec ce problème ... pas des réponses, mais ils peuvent faire gagner beaucoup de temps à quelqu'un d'autre 8 /

Si vous utilisez des bibliothèques statiques qui ne sont PAS construites par xcode4, la solution de contournement "deployment-> skip install" ne fonctionnera pas pour elles. Le travail pour cela consiste à NE PAS les ajouter au projet et à vous assurer que leurs chemins d'accès se trouvent dans les chemins de recherche d'en-tête et/ou de bibliothèque dans vos paramètres de construction, plus les entrées -lblah sont ajoutées aux indicateurs de l'éditeur de liens.

De plus, si vous avez une bibliothèque statique définie comme une dépendance cible (par exemple, nous avions libjson.a défini comme ceci et je suis presque sûr que c'est la chose correcte/logique à faire), vous ne pourrez tout simplement pas construire de .ipa peu importe ce que. Nous avons passé plus d'une journée à danser avec ce problème stupide et à la fin, le supprimer l'a résolu. Personnellement, je pense que cela devrait vraiment laisser un projet cassé ... mais cela fonctionne si bien.

5
roBman

Pour déterminer quel projet/bibliothèque/composant qui empêche Xcode de créer une archive appropriée, procédez comme suit:

Recherchez l'archive dans l'Organiseur, cliquez avec le bouton droit et affichez dans le Finder. Cela affichera un fichier .xcarchive. Cliquez avec le bouton droit et affichez le contenu du package. Regardez maintenant dans le dossier Produits. Très probablement, il y aura plus qu'un simple dossier d'application avec une application iPhone à l'intérieur.

Dans mon cas, il y avait une structure de dossiers usr/local/lib contenant libOAuthConsumer_iPhone.a et quand j'ai cherché cela dans Xcode, j'ai en effet trouvé un autre projet où je n'avais pas défini Skip Install sur YES. Cela peut ne pas être si facile pour tout le monde, mais regarder à l'intérieur du package devrait au moins vous donner un pointeur sur le composant qui gâche le processus d'archivage.

3

Ce sont des étapes pour résoudre le problème ci-dessus dans xcode 4.2

1: "Passer à l'installation" sur OUI pour toutes les bibliothèques de tiers qui sont ajoutées. "Ignorer pour installer" sur NON pour votre projet. Vous pouvez accéder à "Ignorer pour installer" dans les paramètres de build.

2: Sélectionnez vos en-têtes de bibliothèque tiers dans le volet gauche du navigateur.

2.1: À droite se trouve le volet Utilitaires. Affichez et masquez-le avec la vue -> utilitaires-> afficher/masquer les utilitaires (commande-Option-0) ou avec le troisième bouton dans le contrôle segmenté de la vue dans la barre d'outils

2.2: sélectionnez l'inspecteur de fichiers (commande-option-1)

2.3 Choisissez l'adhésion cible et changez l'option en "Projet" de public ou privé

1
IKKA

L'installation de saut n'a pas fonctionné pour moi. J'ai résolu ce problème en déplaçant tous les en-têtes marqués comme publics vers le projet. Je travaille actuellement dans un espace de travail avec une bibliothèque statique et un projet ipad. Il semble qu'il y ait un bogue ou quelque chose avec xcode chaque fois que vous souhaitez créer votre produit avec un projet lié, xcode crée les deux et l'Organiseur n'affiche pas d'option pour partager une ipa.

1
Diego Marafetti