26 votes

Impossible de construire le module Darwin - problèmes liés à l'arm64

J'ai développé ma première application XCode5 ONLY qui est très similaire aux applications que j'ai faites sur 4.6. Elle fonctionne parfaitement bien dans le simulateur et sur mes iPhone 4, 4S et 5, ainsi que sur mes 2 iPads. Cependant, lorsque j'essaie de la valider pour la soumettre à l'App Store, j'obtiens toute une pile d'erreurs relatives au fait que arm64 nécessite 7.0.0 ou plus. La cible de déploiement est fixée à 6.1 et cela ne se produit pas lorsque j'exécute mes applications précédentes dans Xcode 5 qui ont été lancées dans 4.6. Si je change la cible de déploiement pour 7.0, tout est OK. Que se passe-t-il ici ? Que dois-je changer pour que l'application soit validée sur 6.1 ? Merci. Screengrab

EDIT : OK, j'ai changé les Architectures dans Build Settings pour Standard (armv7, armv7s) en enlevant arm64, et tout était OK. Est-ce que c'était la bonne chose à faire ? Je suppose qu'il fonctionnera toujours sur l'iPhone 5S, mais pas en 64 bits. Est-ce exact ?

34voto

iccir Points 3523

Vous ne pouvez pas encore soumettre 64 bits et toujours supporter iOS 6. Vous pourrez toutefois le faire le mois prochain.

Voir https://developer.apple.com/news/index.php?id=9162013a

Edit : Oui, si vous avez armv7 et armv7s, vous pourrez toujours fonctionner sur l'iPhone 5s, mais en mode 32 bits. Je recommande de soumettre avec armv7/armv7s maintenant, et d'ajouter arm64 le mois prochain.


Mise à jour du 1er novembre 2013 :

Selon la version du 22 octobre 2013 de la Guide de transition vers le 64 bits pour Cocoa Touch vous pouvez désormais utiliser Xcode 5.0.1 pour générer un binaire qui inclut les architectures 64 bits et 32 bits, et fonctionne sur les anciennes versions d'iOS.

  • Vous devez utiliser Xcode 5.0.1.
  • La version 64 bits ne peut fonctionner que sur les appareils 64 bits fonctionnant sous iOS 7.0.3+.
  • La version 32 bits ne peut fonctionner que sur les appareils fonctionnant sous iOS 5.1.1+.
  • Les appareils 64 bits fonctionnant sous iOS 7.0.0-7.0.2 utiliseront la tranche 32 bits.

13voto

Tamás Zahola Points 1352

Vous devez utiliser iOS 7.0 comme cible de déploiement pour construire pour arm64. Si vous souhaitez prendre en charge iOS 6.1, vous devrez vous en tenir à armv7s au maximum. Comme les processeurs arm64 peuvent fonctionner en mode 32 bits, cela ne devrait pas être un problème.

5voto

tjv Points 652

J'ai rencontré ce problème lorsque j'ai ajouté une variable BOOL. #import UIKit/UIKit.h a également donné lieu à une erreur. Voici une capture d'écran des modifications que vous devez apporter au projet par défaut.

Avant : enter image description here Après : enter image description here

0voto

J'ai résolu ce problème en changeant l'endroit où j'ai créé mon projet, lors de la création de mon projet, j'ai enregistré sur mon bureau et cela a fonctionné lorsque j'ai créé un dépôt, il a montré ce problème.

J'espère que cette réponse aidera quelqu'un.

0voto

Hermann Klecker Points 8461

J'ai eu à peu près la même série d'erreurs. J'ai obtenu plus ou moins la même chose à deux exceptions près. Comme l'utilisateur tjv, j'ai eu une erreur sur #import aussi. Et je n'ai pas eu l'erreur de linker liée à arm64. L'absence de arm64 est probablement la différence clé dans le symptôme.

Mon problème est que j'ai défini plusieurs macros de précompilation dans mon fichier de projet dans le champ

Apple LLVM 5.1 - Prétraitement

section. Au lieu de définir MACRONAME=1 J'ai tapé MACRONAME= 1 Comme vous pouvez déjà le deviner, l'espace supplémentaire a fait toute la différence.

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