63 votes

Architecture Arm64 dans xcode 5.1

Dans le nouveau XCode 5.1, l'arm64 fait désormais partie des architectures standard pour lesquelles il faut construire.

Cependant, dans mes projets actuels, j'ai inclus des bibliothèques (Google AdMob, par exemple) qui ne prennent pas encore en charge cette nouvelle architecture - elles provoquent maintenant des erreurs de liaison :

ld: symbol(s) not found for architecture arm64

Google AdMob 6.8.0, par exemple, est le suivant dit soutenir le bras64 mais je ne peux pas vraiment le confirmer, à moins que cputype (16777228) cpusubtype (0) est arm64 ? (trouvé grâce à l'outil de ligne de commande du fichier)

libGoogleAdMobAds.a: Mach-O universal binary with 5 architectures
libGoogleAdMobAds.a (for architecture armv7):   current ar archive random library
libGoogleAdMobAds.a (for architecture armv7s):  current ar archive random library
libGoogleAdMobAds.a (for architecture i386):    current ar archive random library
libGoogleAdMobAds.a (for architecture x86_64):  current ar archive random library
libGoogleAdMobAds.a (for architecture cputype (16777228) cpusubtype (0)):   current ar archive random library

Y a-t-il un moyen d'y parvenir ?

108voto

M. Porooshani Points 377

Ce n'est pas si difficile de s'en débarrasser. arm64 Pour l'instant, il suffit de.. :

  • Modifiez votre cible 's Paramètres de construction . Modifiez la valeur de Architectures en ouvrant la liste déroulante, cliquez sur Autre... et la sélectionner, supprimer la ligne avec la valeur $(ARCHS_STANDARD) et ajouter deux lignes avec des valeurs : armv7 y armv7s (ou $(ARCHS_STANDARD_32_BIT) comme indiqué par nschum ), fermez la fenêtre contextuelle.

  • Modifier la valeur Valid Architectures et supprimez simplement le arm64 une partie de celui-ci.

  • Faites-le pour chaque projet imbriqué que vous pouvez avoir dans votre espace de travail ou votre projet.

Note : Ce n'est pas une solution, c'est juste quelques étapes pour atténuer votre problème actuel, s'il vous plaît continuer à suivre vos projets de dépendance pour savoir quand ils viennent avec la compatibilité arm64 et rétablir ces changements de paramètres ASAP.

Bonne chance

19voto

jsherk Points 1743

Depuis Xcode 5.1, $(ARCHS_STANDARD) inclut maintenant arm64 (ainsi que armv7 et armv7s) alors qu'avec Xcode 5.02, $(ARCHS_STANDARD) n'incluait que armv7 et armv7s.

Pour Xcode 5.1

$(ARCHS_STANDARD) = armv7 armv7s arm64

$(ARCHS_STANDARD_32_BIT) = armv7 armv7s

Donc, si vous DEVEZ compiler en 64 bits, vous devez vous assurer que toutes les bibliothèques incluses ont une tranche 64 bits. Si elles ne supportent pas encore le 64 bits, vous devrez compiler en 32 bits à la place.

Mais dans tous les cas, sous les paramètres de compilation de votre cible, vous devez vous assurer que les Achitectures et les Achitectures valides sont les mêmes et qu'elles correspondent (voir les images ci-dessous). Ainsi, vous pouvez essayer les deux avec $(ARCHS_STANDARD) et si cela ne compile pas, alors vous pouvez essayer les deux avec $(ARCHS_STANDARD_32_BIT) qui, en théorie, supprimera les erreurs et compilera un projet fonctionnel.

-

Comme ceci pour 64-bit avec arm64 armv7s et armv7 :

enter image description here

-

Ou comme ceci pour 32 bits avec armv7s et armv7 seulement (sans arm64) :

enter image description here

6voto

karlbecker_com Points 742

Dans les paramètres de construction de votre cible, modifiez les "Architectures valides" pour qu'elles soient uniquement celles que vous prenez en charge ; probablement armv7 et armv7s dans ce cas.

Si vous utilisez Cocoapods, veillez à modifier ce paramètre pour toutes les cibles du projet Pods, et définissez le paramètre "Build Active Architecture Only" de toutes ces cibles sur "No" pour tous les schémas.

Un petit changement à votre podfile pour enlever automatiquement l'architecture de construction 64-bit de vos cibles cocoapods est détaillé ici : http://cameronspickert.com/2014/01/20/remove-the-arm64-architecture-from-cocoapods-targets

5voto

Agnit Points 41

Le réglage de l'architecture sur $(ARCHS_STANDARD_32_BIT) sur XCode 5.1 fonctionne. Il n'est pas nécessaire de supprimer arm64 à partir d'architectures valides.

L'architecture spécifie les architectures réelles sur lesquelles construire et ignore l'entrée arm64 dans les architectures valides (qui spécifie le sur-ensemble). Espérons qu'Apple corrige ce problème rapidement.

1voto

RawMean Points 1761

J'ai eu la même erreur. Le téléchargement de la nouvelle version du SDK Google AdMob 6.8.0 a résolu le problème. Voici le lien : https://developers.google.com/mobile-ads-sdk/download#downloadios

Il n'est donc pas nécessaire de désactiver l'architecture arm64.

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