96 votes

Comment construire des architectures armv6 et armv7 avec iOS 5

Dans iOS5 Apple supprime l’armv6 architecture de ARCHS_STANDARD_32_BIT.

Afin de maintenir l’appui pour iPhone3G je veux toujours compiler en armv6 même dans iOS5.

N’importe qui avons trouvé une solution pour cela ?

96voto

MarkGranoff Points 12142

Je viens de construire quelque chose aujourd'hui spécifier une cible de déploiement de l'iOS 4.0. Avec seulement armv7 spécifié dans les Architectures, Xcode m'a prévenu qu'à l'appui de rien sous iOS4.2 j'ai dû inclure armv6 dans les Architectures. Il suffit de modifier ce champ, cliquez sur le bouton "+" lorsque la boîte de dialogue pop-up et entrez le littéral "armv6".

Dans mon cas, nous voulons que notre application fonctionne sous iOS4 et iOS5. Nous avons dû faire quelques modifications afin qu'il allait travailler correctement sous iOS5, mais tous ces changements ont été fait avec iOS4-amicale des modifications de code.

Nous avons également ajouté quelques iOS5 les capacités d'une manière qui permet à l'application de s'exécuter sans s'écraser sous iOS4. Plus précisément, nous avons testé pour iOS5 capacités avant d'essayer de les utiliser, et lié iOS5-seules les bibliothèques comme Facultatif.

Donc, en soutenant iPhone3G dans un iOS5 monde pourrait tout aussi bien dire "nous voulons que notre application à exécuter sur iOS4 et au-dessus (indépendamment de toute iOS5 utilisation de la fonctionnalité)" plutôt que "nous voulons nous assurer que notre application fonctionne sur une machine plus ancienne de course iOS5". Il y a une différence ici; penser. :-)

De toute façon, l'ajout de armv6 support arrière est très facile. Et je suppose que le point est ceci: À un certain point, quand il n'y a plus armv6 appareils à s'inquiéter (pour quelque raison que ce soit), vous n'aurez pas à construire pour elle. Apple est d'avis tout le monde doit passer à la dernière version du matériel dès que possible. Donc, dans ce monde, il n'est pas nécessaire pour les outils à défaut de rien du tout mais les plus récents et les plus grands aussi. :-) Heureusement (ou pas), nous les développeurs, nous vivons dans le monde réel et de reconnaître que vous avez à supporter les vieux trucs pendant un certain temps. Et je crois que le Xcode équipe de dev sait cela aussi, c'est pourquoi vous pouvez ajouter armv6 le soutien de retour dans un tout simplement.

51voto

adjwilli Points 4477

La réponse simple est que vous devez modifier les paramètres actuels de « Standard (armv7) - $(ARCHS_STANDARD_32_BIT) » pour être simplement « Armv6 » et « armv7 ». Voir l’image ci-dessous. Vous devez supprimer la ligne avec les paramètres précédents pour elle de travailler.

Correct settings for armv6 and armv7

11voto

ubert Points 121

Assurez-vous également que vous définissez le type d’objectifs de projet et... m’a coûté une heure pour comprendre cela. Il a mis pour mais pas l’autre. J’espère que cela aide. GLTA

9voto

jfieres Points 91

Je pense qu'il y a une raison pour laquelle Apple a chuté armv6 de la configuration standard.

J'ai compilé armv7/armv6 avec iOS5 SDK, cependant, la armv6 compilateur produit un mauvais code en mode release. Après des heures de recherche d'une solution de contournement (en essayant de llvm ou gcc avec différents niveaux d'optimisation) j'abandonne.

Donc, je vais revenir à iOS SDK 4.x tant que je charge les anciens armv6 appareils.

Exemple de code:

// myView center=(160, 100)
CGPoint p=myView.center;  
// now p=(100,100) (what the heck?)
p.x=myView.center.x;
p.y=myView.center.y;
// now p=(160,100) 
p.y+=100;
// now p =(200,200) (what the heck?)

Je vais peut-être avoir une certaine corruption de la mémoire, cependant, sur la armv7 compilateur et sur iOSSDK < 5.0, il se comporte comme prévu.

Meilleures salutations

7voto

Peter Johnson Points 2289

Ne sais pas si c’est en fait une solution encore, mais j’ai découvert que le remplacement la chaîne définie dans la section « architectures », qui était de $(ARCHS_STANDARD_32_BIT), avec « armv6 armv7 » m’a permis de compiler avec iOS5 comme base et iOS4 comme une cible de déploiement, puis passez validation.

Je n’utilise pas toute les bibliothèques IOS5 exclusive ou des appels, mais compte dans ma prochaine version.

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