168 votes

Xcode 5.1 - Aucune architecture à compiler pour (ONLY_ACTIVE_ARCH = YES, arch arch actif = x86_64, VALID_ARCHS = i386)

Après la mise à jour vers Xcode 5.1, je ne peux plus construire mon projet pour le simulateur 64 bits, en recevant cette erreur:

  No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386).
 

Ce sont mes paramètres de construction cible:

Paramètres de génération de cibles Xcode

J'ai essayé de remplacer «Construire l'architecture active» par «Non», en plus d'ajouter «i386» aux «architectures valides». Malheureusement, ni l'un ni l'autre n'ont fonctionné. Merci pour vos suggestions!

182voto

Kjuly Points 15089

Ce que vous devez faire est de simplement définir l' ONLY_ACTIVE_ARCH de NO (au moins fonctionne pour moi). Ci-dessous est une capture d'écran:


EDIT:

Autant que je sache (veuillez indiquer si il ya quelque chose de mal, merci), si vous définissez ONLY_ACTIVE_ARCH de YES, cela signifie que le Xcode ne fera que renforcer l'architecture (qui fait référence à l'appareil qui est actif dans Xcode actuellement). Semble Xcode par défaut du paramètre est défini Debug YES, afin de ne pas créer des binaires pour les autres architectures quand vous voulez le construire pour un appareil spécial qui est connecté à votre Mac.

La raison n'a pas de construire peut-être que, le projet ne prend pas en charge l'architecture de l'appareil connecté. Donc, la meilleure solution est d'ajouter le droit d'architecture pour votre appareil. Ci-dessous est une liste pour les architectures et les périphériques qui prennent en charge:

  • ARMv8/ARM64: iPhone 5s, iPad Air, Retina iPad Mini
  • ARMv7s: iPhone 5, iPhone 5c, iPad 4
  • ARMv7: iPhone 3GS, iPhone 4, iPhone 4S, iPod 3G/4G/5G, iPad, iPad 2, iPad 3, iPad Mini
  • ARMv6: iPhone, iPhone 3G, iPod 1G/2G

Alors pourquoi "jeu de l' ONLY_ACTIVE_ARCH de NO" fonctionne? Parce que l'appareil peut toujours exécuter le binaire construit pour toutes les architectures que vous avez ajouté (pass), mais perd un peu de performance. C'est juste une solution rapide, mais pas mieux.


Remarque: Le plus d'architectures que vous avez ajouté, le plus grand que le binaire est généré. Il est donc bon de choisir le droit d'architectures pour votre projet. ;)

102voto

Mike Points 576

J'ai eu le même message d'erreur après la mise à jour de XCode 5.1. Êtes-vous à l'aide de CocoaPods? Si oui, cela devrait résoudre le problème:

  1. Supprimer les "Gousses" projet à partir de l'espace de travail dans le volet gauche de la fenêtre de Xcode et à proximité de Xcode.
  2. Exécuter "pod install" à partir de la ligne de commande pour recréer les "Gousses" du projet.
  3. Ré-ouvrez Xcode et assurez-vous que "Construire Active Seulement l'Architecture" est réglé sur "Non" dans les paramètres de création à la fois les "Gousses" projet et de votre propre projet.
  4. Nettoyer et créer.

29voto

xardas Points 176

Ajouter arm64 à la cible valid architectures . On dirait qu'il ajoute l'architecture x86-64 architectures valides du simulateur.

27voto

samwize Points 4144

Si vous utilisez CocoaPods, le problème le plus probable est que les paramètres de construction du projet Pods pour Build Active Architecture Only sont définis sur Oui pour le débogage.

La solution est simple. Changez-le en Non .

De même, passez à Non pour votre projet d'application.

12voto

Jayprakash Dubey Points 1194

J'ai eu un problème similaire. Vous l'avez résolu en changeant "Architecture" en " $ (ARCHS_STANDARD_32_BIT) " dans Build Settings for Project.

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