Après la mise à jour vers Xcode 5.1, je ne peux plus créer mon projet pour le simulateur 64 bits, recevant cette erreur:
No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386).
Voici mes paramètres de build cible:
J'ai essayé de changer "Build Active Architecture" sur Non, ainsi que d'ajouter "i386" aux "Valid Architectures", malheureusement aucun n'a fonctionné. Merci pour vos suggestions!
Réponses:
J'ai eu le même message d'erreur après la mise à niveau vers XCode 5.1. Utilisez-vous CocoaPods? Si tel est le cas, cela devrait résoudre le problème:
la source
Ce que vous devez faire est simplement de définir le
ONLY_ACTIVE_ARCH
surNO
(au moins fonctionne pour moi). Ci-dessous, une capture d'écran:ÉDITER:
Pour autant que je sache ( veuillez le signaler s'il y a quelque chose qui ne va pas, merci ), si vous définissez
ONLY_ACTIVE_ARCH
surYES
, cela signifie que le Xcode ne sera construit que pour l'architecture active (qui fait référence au périphérique actuellement actif dans Xcode). Il semble que le paramètre par défaut de Xcode soit défini sur DebugYES
, de sorte qu'il ne construira pas de binaires pour d'autres architectures lorsque vous souhaitez uniquement créer un périphérique spécial connecté à votre Mac.La raison de l'échec de la construction peut être que le projet ne prend pas en charge l'architecture de l'appareil que vous avez connecté. La meilleure solution consiste donc à ajouter la bonne architecture pour votre appareil. Vous trouverez ci-dessous une liste des architectures et des appareils prenant en charge:
iPhone 6
,iPhone 5s
,iPad Air
,Retina iPad Mini
iPhone 5
,iPhone 5c
,iPad 4
iPhone 3GS
,iPhone 4
,iPhone 4S
,iPod 3G/4G/5G
,iPad
,iPad 2
,iPad 3
,iPad Mini
iPhone
,iPhone 3G
,iPod 1G/2G
Alors , pourquoi « définir la
ONLY_ACTIVE_ARCH
àNO
» œuvres? Parce que l'appareil peut toujours exécuter le binaire qui a été construit pour toutes les architectures que vous avez ajoutées (passez la compilation), mais perdra des performances. C'est juste une solution rapide, mais pas la meilleure.Remarque : plus vous ajoutez d'architectures, plus le binaire sera généré. Il est donc bon de choisir les bonnes architectures pour votre projet. ;)
la source
Ajouter
arm64
à la ciblevalid architectures
. On dirait que cela ajoute également unex86-64
architecture aux architectures valides du simulateur.la source
Si vous utilisez CocoaPods, le problème le plus probable est que votre projet Pods Build Settings for Build Active Architecture Only est défini sur Yes pour le débogage.
La solution est simple. Changez-le en Non .
De même, passez à Non pour votre projet d'application.
la source
J'ai eu un problème similaire. Je l'ai résolu en changeant "Architecture" en " $ (ARCHS_STANDARD_32_BIT) " dans les paramètres de construction du projet.
Maintenant, vous devez sélectionner les architectures standard (armv7, arm64) - $ (ARCHS_STANDARD) car Apple recommande que les applications soient construites sur une architecture 64 bits. Cliquez sur: document Apple
la source
$(ARCHS_STANDARD_INCLUDING_64_BIT)
?$(ARCHS_STANDARD_32_BIT)
ou$(ARCHS_STANDARD_INCLUDING_64_BIT)
?Ajouter: Architectures: $ (ARCHS_STANDARD_INCLUDING_64_BIT)
Architectures valides: arm64 armv7 armv7s
la source
Juste au cas où, pour toute personne rencontrant toujours le problème malgré le respect de ce qui précède, vérifiez que le simulateur que vous utilisez est également celui pris en charge. J'avais spécifié le mien sur arm7 et arm7s, mais j'essayais d'exécuter l'application sur un simulateur 64 bits.
la source
Pour éviter que "l'installation du pod" ne réinitialise only_active_arch pour le débogage à chaque exécution, vous pouvez ajouter ce qui suit à votre fichier de pod
la source
Ajoutez simplement arm64 dans une architecture valide. J'espère que cela fonctionnera pour vous.
la source
Mon problème était que le projet Pods ciblait OS X, malgré mon Podfile
platform :ios
. J'utilise des cocoapodes 0.35.0.rc2.Pour résoudre ce problème, sélectionnez le projet Pods dans le navigateur de projet et vérifiez que le nœud Pods PROJECT (attention, pas la cible Pods) cible iOS. Autrement dit, les paramètres de construction des architectures doivent être:
$(ARCHS_STANDARD)
iOS 8.1
iOS
$(ARCHS_STANDARD)
Je voulais également créer toutes les architectures, j'ai donc ajouté ce qui suit au Podfile:
la source
J'ai dû ajouter ce qui suit
i386
etx86_64
àValid Architectures
. J'utilise Xcode 7.2 et cible iOS 8+. J'avais déjàarmv7
,armv7s
etarm64
là-dedans et cela fonctionnait dans Xcode 6.4.la source
J'ai rencontré le même problème lors de l'exécution de mon application sur iPad à l'aide de xcode 5.1. Il a été résolu en supprimant armv7s des «architectures valides» et en définissant la valeur «construire uniquement les architectures actives» sur Non. Ces deux champs se trouvent dans votre application-> cibles-> paramètres de construction-> architectures.
la source
Je suis arrivé à cette question en raison d'un problème avec la construction de ligne de commande pour le simulateur dans Xcode 7.2. Au cas où quelqu'un d'autre arriverait ici avec le même problème, je partagerai la solution que j'ai trouvée:
Apparemment, il y a un bogue dans Xcode 7.2 qui provoque un
xcodebuild
échec lors de la tentative de compilation pour le simulateur. La solution est de spécifier l'option "-destination", par exemple:Mettre à jour
L'exemple de commande ci-dessus créera un binaire comprenant les graphiques pour iPhone 6 uniquement. Si le binaire est exécuté sur d'autres simulateurs, les graphiques de l'iPhone 6 sont mis à l'échelle de la plate-forme. Une meilleure solution de contournement qui contient tous les graphiques pour toutes les plates-formes consiste à spécifier le paramètre
PLATFORM_NAME=iphonesimulator
, par exemple:la source
Essayez de supprimer toutes les architectures précédentes (c'est-à-dire supprimez le paramètre ARCHS_STANDARD) en même temps que vous ajoutez i386 aux architectures. Cela devrait changer l'architecture active en i386. J'ai rencontré un problème similaire lorsque j'ai essayé de construire pour armv7 par défaut, mais il a continué à essayer de construire pour arm64. J'ai changé ARCHS_STANDARD en ARCHS_STANDARD_32_BIT, et cela a changé l'architecture active choisie.
la source
En acrhiecture - parfois pour prendre en charge 6.0 et 7.0, nous excluons arm64
Dans les architectures -> acrchitecture - sélectionnez l'architecture standard arm64 armv7 armv7s. Juste en dessous, dans Acrchitecture valide, l'utilisateur arm64 armv7 armv7s est inclus. Cela a fonctionné pour moi.
la source
J'ai résolu ce problème en utilisant la réponse de @ Kjuly et la ligne spécifique:
"La raison de l'échec de la construction peut être que le projet ne prend pas en charge l'architecture de l'appareil que vous avez connecté."
Avec Xcode chargé, il configure automatiquement mon application iPad sur iPad Air
Cela a provoqué l'erreur d'analyse de dépendance.
La modification du type d'appareil a immédiatement résolu le problème:
Je ne sais pas pourquoi cela fonctionne, mais c'est une réponse très rapide qui m'a évité beaucoup de tripotages en arrière-plan et a instantanément fait fonctionner l'application pour tester. Je n'aurais jamais pensé que cela pouvait être une chose et quelque chose d'aussi simple réglerait le problème, mais dans ce cas, c'est le cas.
la source
J'ai trouvé qu'il était nécessaire de saisir les noms d'architecture à la main:
Je ne sais pas pourquoi cela était nécessaire, c'est-à-dire pourquoi ces valeurs n'ont pas été héritées de Xcode lui-même. Mais dès que j'ai fait cela, le problème a disparu.
la source
Dans les architectures valides: sélectionnez chaque entrée (version, débogage) et créez et appuyez sur retour arrière. Ça devrait marcher
la source