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:
J'ai essayé de changer "Build Active Architecture" en "No", ainsi que d'ajouter "i386" aux "architectures valides", malheureusement, aucune n'a fonctionné. Merci pour toutes les suggestions!
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:
Ce que vous devez faire est simplement de régler le ONLY_ACTIVE_Arch
sur NO
(au moins cela fonctionne pour moi). Ci-dessous une capture d'écran pour cela:
Pour autant que je sache (, veuillez indiquer s'il y a quelque chose qui ne va pas, merci ). Si vous définissez ONLY_ACTIVE_Arch
sur YES
, cela signifie que le Xcode va construit uniquement pour l’architecture active (qui fait référence au périphérique actuellement actif dans Xcode). Semble que le paramètre par défaut de Xcode est défini sur Debug sur YES
, de sorte qu'il ne crée pas de fichiers binaires pour d'autres architectures lorsque vous souhaitez créer uniquement pour un périphérique spécial connecté à votre Mac.
La raison pour laquelle la construction a échoué est peut-être que le projet ne prend pas en charge l'architecture du périphérique 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 "régler le ONLY_ACTIVE_Arch
sur NO
" fonctionne? Parce que le périphérique peut toujours exécuter le binaire construit pour toutes les architectures que vous avez ajoutées (transmettre la construction), il perdra certaines performances. C'est juste une solution rapide, mais pas la meilleure.
Remarque : Plus vous avez ajouté d'architectures, plus le fichier binaire généré sera important. Il est donc bon de choisir les bonnes architectures pour votre projet. ;)
Ajoutez arm64
à la valid architectures
de la cible. On dirait que cela ajoute l'architecture x86-64
aux architectures valides du simulateur.
Si vous utilisez CocoaPods, le problème le plus probable est dû au fait que les paramètres de construction de votre projet Pods pour Construire une architecture active uniquement ont la valeur Oui pour le débogage.
La solution est simple Changez-le en No.
De même, remplacez No pour votre projet d'application.
J'ai eu le même problème. Vous avez résolu le problème en remplaçant "Architecture" par " $ (ARCHS_STANDARD_32_BIT) "dans les paramètres de construction du projet.
Maintenant, vous devez sélectionner les architectures standard (armv7, arm64) - $ (ARCHS_STANDARD) puisque Apple recommande de créer des applications Architecture 64 bits. Cliquez sur: document Apple
Ajouter: Architectures: $ (ARCHS_STANDARD_INCLUDING_64_BIT)
Architectures valides: arm64 armv7 armv7s
Pour éviter d'avoir "pod install" réinitialiser only_active_Arch pour le débogage à chaque exécution, vous pouvez ajouter ce qui suit à votre fichier pod
# Append to your Podfile
post_install do |installer_representation|
installer_representation.project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ONLY_ACTIVE_Arch'] = 'NO'
end
end
end
Juste au cas où, si vous rencontrez toujours le problème, vérifiez que le simulateur que vous utilisez est également pris en charge. J'avais les miens spécifiés pour arm7 et arm7s mais j'essayais de lancer l'application sur un simulateur 64 bits.
Ajoutez simplement arm64 dans une architecture valide. J'espère que cela fonctionnera pour vous.
Je devais ajouter les i386
et x86_64
suivants à Valid Architectures
. J'utilise Xcode 7.2 et cible iOS 8+. J'avais déjà armv7
, armv7s
et arm64
là-dedans et cela fonctionnait dans Xcode 6.4.
Mon problème était que le projet Pods ciblait OS X, malgré que mon fichier Podfile ait platform :ios
. J'utilise des cocoapodes 0.35.0.rc2.
Pour y remédier, 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. C'est-à-dire que les paramètres de construction des architectures doivent être:
$(ARCHS_STANDARD)
iOS 8.1
iOS
$(ARCHS_STANDARD)
Je voulais aussi construire toutes les architectures, alors j'ai ajouté ce qui suit au fichier Podfile:
post_install do | installer |
installer.project.build_configurations.each do |config|
config.build_settings['ONLY_ACTIVE_Arch'] = 'NO'
end
end
J'ai rencontré le même problème lors de l'exécution de mon application sur iPad avec xcode 5.1. Le problème a été résolu en supprimant les armv7 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.
Je suis arrivé à cette question en raison d'un problème avec la construction en ligne de commande pour simulateur dans Xcode 7.2. Si quelqu'un d'autre arrive avec le même problème, je partagerai la solution que j'ai trouvée:
Apparemment, il y a n bogue dans Xcode 7.2 qui provoque l'échec de xcodebuild
lors de la tentative de construction pour le simulateur. La solution consiste à spécifier l'option "-destination", par exemple:
xcodebuild -project TestBuildCmd.xcodeproj -scheme TestBuildCmd -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 6' build
Mettre à jour
L'exemple de commande ci-dessus générera un fichier binaire comprenant les graphiques pour iPhone 6 uniquement. Si le fichier binaire est exécuté sur d'autres simulateurs, les graphiques de l'iPhone 6 sont adaptés à la plate-forme. Un meilleure solution de contournement qui contient tous les graphiques pour toutes les plateformes consiste à spécifier le paramètre PLATFORM_NAME=iphonesimulator
, par exemple:
xcodebuild -project TestBuildCmd.xcodeproj -scheme TestBuildCmd -sdk iphonesimulator -Arch i386 PLATFORM_NAME=iphonesimulator build
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 le projet ne prend pas en charge l'architecture du périphérique que vous avez connecté."
Avec Xcode chargé, je configure automatiquement mon application iPad pour iPad Air.
Cela a causé l'erreur d'analyse de dépendance.
Changer le type d'appareil a immédiatement résolu le problème:
Je ne sais pas pourquoi cela fonctionne, mais voici une réponse très rapide qui m'a permis d'économiser beaucoup de bidouilles en arrière-plan et qui a immédiatement permis à l'application de fonctionner. Je n'aurais jamais pensé que cela pourrait être une chose et quelque chose d'aussi simple pourrait résoudre le problème, mais dans ce cas, c'est ce qui s'est passé.
Dans acrhiecture - parfois pour supporter 6.0 et 7.0, nous excluons arm64
Dans les architectures -> acrchitecture - sélectionnez l'architecture standard arm64 armv7 armv7s. Juste en-dessous dans Valid architecture, l'utilisateur arm64 armv7 armv7s est inclus. Cela a fonctionné pour moi.
Dans Architectures valides: sélectionnez chaque entrée (release, debug), générez et appuyez sur backspace. Ça devrait marcher
Essayez de supprimer toutes les architectures précédentes (c'est-à-dire de supprimer le paramètre ARCHS_STANDARD) en même temps que vous ajoutez i386 aux architectures. Cela devrait changer l'architecture active à i386. J'ai rencontré un problème similaire lorsque j'ai essayé de construire pour armv7 par défaut, mais il essayait toujours de construire pour arm64. J'ai remplacé ARCHS_STANDARD par ARCHS_STANDARD_32_BIT, ce qui a modifié l'architecture active choisie.