"Avertissement: les applications iPhone doivent inclure une architecture armv6" même avec un ensemble de configuration de construction

332

Cela fait un moment que je n'ai pas dû ajuster les paramètres de construction du projet. Après la mise à niveau vers un SDK récent, j'ai du mal à créer ma configuration de distribution ad hoc.

Build génère cet avertissement et cette erreur:

avertissement: les applications iPhone doivent inclure une architecture armv6 (ARCHS = "armv7" actuel)

iPhone / iPod Touch: il manque une architecture requise à l'exécutable de l'application. Au moins une des architectures suivantes doit être présente: armv6 (-19033)

Cependant, dans mon projet, je pensais que les choses étaient correctement réglées:

  • Les architectures sont: Standard (armv6 armv7)
  • SDK de base: dernier iOS (actuellement défini sur iOS 4.2)
  • Architectures valides: armv6 armv7

texte alternatif

J'ai nettoyé toutes les cibles.

J'apprécie tous les conseils.

pseudo
la source
La mienne était une ancienne application qui a reçu une mise à jour, et elle génère également la même erreur pour la cible de déploiement iOS <4.3! Ma solution a donc été de supprimer toutes les références à armv6 et de la définir sur> = 4.3. Ça a marché.
Henrik Erlandsson
Et tout à l'heure, j'ai essayé la même chose pour une autre ancienne application qui a subi une refonte et cela n'a pas fonctionné ... Problème avec XCode 5, il lit mal les paramètres de construction, semble-t-il.
Henrik Erlandsson

Réponses:

418

Si vous utilisez Xcode 4.2 ou supérieur, essayez ce qui suit:

  1. Cliquez sur le nom de votre projet (dans la colonne de gauche), puis sur la cible:

    entrez la description de l'image ici

  2. Cliquez sur l'onglet 'Build Settings' (dans la colonne de droite):

    entrez la description de l'image ici

  3. Cliquez sur la ligne 'Release' ou 'Distribution' sous 'Architectures', et choisissez 'Other ...':

    entrez la description de l'image ici

  4. Double-cliquez sur la ligne en surbrillance nommée '$ (ARCHS_STANDARD_32_BIT)' dans le popover qui apparaît et remplacez-la en tapant 'armv6'. Ajoutez ensuite une nouvelle ligne avec le bouton plus en bas à gauche de la fenêtre contextuelle, et tapez 'armv7', puis cliquez sur Terminé:

    entrez la description de l'image ici

Mise à jour: vous devez également ajouter des armv7 pour cibler l'iPhone 5. (Et supprimez armv6 si vous construisez avec Xcode 4.5 ou supérieur, qui ne prend plus en charge armv6.)

C'est tout. Vous devriez maintenant pouvoir créer / archiver sans générer d'erreurs.

Si cela ne fonctionne toujours pas, consultez cette réponse de justinxreese , qui suggère d'ajouter des entrées pour armv6 et armv7 sous "Required Device Capabilities" dans votre fichier info.plist.

pseudo
la source
3
Oui, on dirait qu'Apple s'éloigne d'ARM6, donc cela semble être une étape nécessaire pour Xcode 4.2. Il est étrange que le processus de soumission nécessite toujours une version ARM6, même si la version 4.2 est désormais publique ...
Jasarien
7
Je n'ai pas de ligne de distribution sous architecture, mais j'ai une ligne "Release". Je ne sais pas comment faire
OMGPOP
2
@ Let'sSpotIt Ajoutez simplement armv6 et armv7 à votre ligne Release. Le projet dans mes captures d'écran a été importé d'une version antérieure de Xcode, d'où les différents noms d'architecture.
Nick
2
Merci Nick. De plus, les nouveaux projets créés dans Xcode 4.2 peuvent nécessiter la modification de leur fichier info.plist pour prendre en charge les périphériques armv6. Voir ma réponse supplémentaire ci-dessous.
MattyG
1
@ Nick merci pour l'astuce, et pour moi j'ai dû sélectionner le "Projet" au lieu de "Cible". la sélection dans les paramètres de construction "Cible" n'a pas fonctionné pour moi. de toute façon merci encore pour l'aide.
Prasad De Zoysa
62

Si vous décochez la case "Build Active Architecture Only", il construira toutes les architectures valides.

Mise à jour : cela n'est plus applicable à partir de Xcode 4 - suivez les instructions de Nick pour Xcode 4 et versions ultérieures.

Brian
la source
11
Vous pouvez accélérer vos temps de génération en définissant sur OUI pour les versions de débogage et Non sur les versions de version.
Billy Gray
59

J'ai eu ce problème même après avoir suivi la réponse acceptée et j'ai trouvé ce qui suit fonctionner:

Dans votre Info.plist, ajoutez une entrée pour les capacités de périphérique requises. Ce doit être un tableau et aura deux entrées.

  • Point 0: armv6
  • Article 1: armv7

Il ressemblera à ceci:

Entrée de capacités de périphérique requises

justinxreese
la source
Cette solution a corrigé mes autres avertissements d'architecture, mais je reçois toujours le premier, et j'ai également "Build Active Architecture Only" réglé sur "No"
Dan F
corrigé pour moi, car la solution précédente ne s'appliquait pas. Pour une raison quelconque, armv6 ne s'affiche plus sous mes paramètres d'architecture de construction: S
seeafish
Ceci avec la réponse de Nick ci-dessus l'a corrigé pour moi. +1
Saurabh Wadhwa
Vous devez supprimer cette option du tout dans les dernières versions de xCode, puis elle sera compilée. Lorsque vous mettez les deux, il faudra que les deux architectures soient valides dans votre appareil, ce qui est pratiquement impossible
Artem
Pour construire avec XCode 4.5+, vous devrez supprimer armv6 des capacités de périphérique requises.
Pulkit Goyal
26

En plus de la réponse de Nick à propos de Xcode 4.2, vous devrez peut-être également revoir votre fichier info.plist. Il semble que de nouveaux projets démarrés dans Xcode 4.2 par défaut spécifient 'armv7' dans les 'Capacités de périphérique requises'. Vous devrez supprimer cela si vous souhaitez prendre en charge les appareils exécutant armv6 (par exemple l'iPhone 3G).

entrez la description de l'image ici

Supprimez armv7 des «capacités de périphérique requises» dans votreProjectName-Info.plist

MattyG
la source
21

Une mise à jour iOS 6

Changements dans Xcode 4.5.x pour iOS 6

  1. Xcode 4.5.x (et versions ultérieures) ne prend pas en charge la génération de binaires armv6.
  2. Inclut désormais la prise en charge de l'iPhone 5 / armv7s.
  3. La cible de déploiement minimale prise en charge avec Xcode 4.5.x ou version ultérieure est iOS 4.3.
Animesh
la source
6

J'ai eu ce problème également. Je viens de définir ma cible de déploiement sur 4.3 et de ne laisser que l'architecture armv7 et cela a fonctionné. Au point, presque tout le monde en a 5, donc 4,3 c'est bien.

Tom Kincaid
la source
3

pour moi, cela ne fonctionne pas avec chaque réponse. mais j'essaye TARGETS> Architectures> Debug et ajoute une nouvelle ligne avec le bouton plus, et tape 'armv6' (with out '), puis cliquez sur Terminé.

et enfin CMD + B, puis cliquez avec le bouton droit sur PrjectName.app (dans le dossier Produits)> Ouvrir dans le Finder> Compressez "PROJECT_NAME.APP" (dans Debug-iphoneos)> Téléchargez sur AppStore

entrez la description de l'image ici

c'est mon réglage d'écran. entrez la description de l'image ici

si vous avez inclus un projet, veuillez tout configurer. J'espère votre aide.

m. octobre
la source
1
J'ai également dû définir armv6 sur l'architecture de publication avant que cela fonctionne.
mph
3

Après avoir essayé un mélange de ces réponses, je suis finalement tombé sur le fait de le faire fonctionner. Je suis tellement énervé contre Apple en ce moment. Encore une heure, ils m'ont fait perdre. Voici ma config.

entrez la description de l'image ici

Louie
la source
2

J'ai essayé toutes les réponses ci-dessus, aucune n'a résolu ma question. Je crée donc un nouveau projet et diffère les paramètres de construction un par un. Seul "Fichiers d'autorisations alternatifs" est différent. La construction du projet a échoué a une valeur armv7. Supprimez-le puis nettoyez-> build-> archive. Réussir! L'espoir peut résoudre votre question

mbo
la source
2

Wow, je mets à jour / soumets des applications tous les 6 mois environ. Chaque fois que je fais cela, je dois apprendre la "nouvelle" façon de le faire ...

Mêmes problèmes que ceux décrits ci-dessus lors de l'exécution d'iOS 5.1 et de Xcode 4.3.2

Merci pour les messages! J'ai passé un peu de temps à mettre à jour tous les paramètres du projet en armv6, armv7, mais pas de joie. Lorsque j'ai défini «construire une architecture active uniquement» sur Non, j'ai eu une erreur de construction sur la mise des deux objets dans le même répertoire.

Heureusement, j'ai remarqué que vous modifiez plutôt les paramètres de build cibles. C'est ce qui a finalement fonctionné (armv6, armv7 et en définissant "construire une architecture active uniquement" sur Non dans les paramètres de construction cible). Comme avertissement, j'avais déjà défini toutes les architectures sur armv6, armv7 dans les paramètres du projet également.

Quoi qu'il en soit, merci pour l'aide, Brent

Brent
la source
2

Je devais être sûr de modifier ces paramètres dans les paramètres Cible et Projet sur xCode 4.3.2 après avoir fait cela et l'avoir configuré pour construire à la fois pour armv6 et armv7 partout où j'ai pu soumettre mon application.

Par mesure de sécurité, j'ai également quitté xCode entre les modifications et le nettoyage, la construction et le cycle d'archivage.

pwbrewer
la source
0

Un problème assez douloureux pour moi aussi. Je viens de passer environ une heure à essayer de construire et de reconstruire - pas de joie. Au final, j'ai dû faire ceci:

  1. Mettre à niveau le SDK de base vers la dernière version (dans mon cas, iOS 5)
  2. Redémarrez xCode
  3. Nettoyer et construire
  4. Ça a marché!

Je suppose que c'est un tas de jargon sur arm6, arm7 car il semblait que mon projet était valide pour les deux, au moins les paramètres semblaient le dire), je suppose que c'est une façon cynique de nous embrouiller avec les détails techniques, que nous don ne comprends pas, donc nous prenons simplement l'option facile et ciblons le dernier iOS (bon pour Apple avec plus de gens étant à jour) ....

dijipiji
la source
0

Voici la documentation d'Apple:

Q&A technique QA1760

Il dit qu'il y a deux choses que vous devez corriger:

  1. Ajouter armv6aux paramètres de construction de l'architecture
  2. Définissez Build Active Architecture Only sur No.

Si cela ne vous aide toujours pas, vérifiez que vous modifiez vraiment les paramètres de construction de l'architecture pour la bonne configuration de construction - j'ai perdu une demi-heure à tripoter la mauvaise et à me demander pourquoi cela n'a pas fonctionné ...

Sélectionnez Edit Scheme...dans le menu Produit, cliquez sur le schéma "Archive" dans la liste de gauche et vérifiez la configuration de la construction. Modifiez la valeur si ce n'était pas ce que vous attendiez.

Rolf Staflin
la source
0

Remarque; J'ai dû effectuer ces étapes pour mon projet de base et le fichier PhoneGap .xcodeproj intégré dans mon application.

Oui, j'intègre PhoneGap; ils se mettent à jour de manière trop fréquente et j'ai moins de deux mois pour savoir qu'une fonctionnalité est dépréciée.

James Perih
la source
0

Essayez de changer votre cible de déploiement pour quelque chose de plus élevé qu'un processeur armv6. Les paramètres de xCode font référence au niveau du système d'exploitation, par exemple: iOS version # {3.1, 3.2, 4.0, 4.1, 4.2, 4.3, 5.0, 5.1}

(i) Vous pouvez définir cela dans l'onglet des paramètres de construction ou l'onglet de résumé. Commencez en haut à gauche de la fenêtre dans le Navigateur du projet, avec tous les fichiers qui y sont répertoriés. Cliquez sur celui le plus haut qui a une icône bleue.

(ii) Si vous prévoyez d'utiliser les circuits de ligne de shader programmables, accessibles et contrôlés via l'API openGL ES 2.0, vous devez définir votre "version de déploiement" à environ 4,3, qui, je crois, n'est disponible que sur des appareils tels que le 3GS ou plus récent. xCode signale que iOS 4.2.5 ou supérieur est nécessaire pour exécuter le code armv7. Et encore une fois, ce processeur, je crois, a commencé avec le 3GS. * IOS 4.3 semble être le choix pour moi, pour l'instant.

http://theiphonewiki.com/wiki/index.php?title=Armv7

http://en.wikipedia.org/wiki/List_of_iOS_devices

Marc Clint Dion
la source
0

Si xCode continue de se plaindre d'armv7, assurez-vous de déconnecter tout périphérique de connexion (en particulier l'iPhone 5 !!) et réessayez. Ça m'a pris des heures pour trouver ce petit renseignement.

refaelio
la source
0

En utilisant Xcode 4.2 sur Snow Leopard, j'ai utilisé les paramètres suivants pour créer une application qui fonctionnait à la fois sur armv6 (Iphone 3G et inférieur) ET armv7 (tout plus récent que 3G, y compris 3GS).

architectures: armv6 et armv7 ($ (ARCHS_STANDARD_32_BIT) supprimé)
construisent une architecture active uniquement: aucune
capacité de périphérique requise: armv6

ne placez pas armv7 dans les capacités de l'appareil requises si vous souhaitez que l'application s'exécute également sur 3G et moins.

noromamai
la source
1
c'est la seule chose qui a fonctionné pour moi. tests sur iphone4, iphone3g, ipad1, ipad2. lire que je devais mettre armv6 ET armv7 dans les capacités de l'appareil requises, mais dès que j'installe armv7, l'application ne téléchargera pas / ne fonctionnera pas sur l'iphone3g
noromamai
Laissant l'entrée armv7 dans "Capacités de l'appareil requises", Xcode m'a interdit de fonctionner sur iPhone 3G.
tinsukE