Dans iOS5, Apple supprime l' architecture armv6 de ARCHS_STANDARD_32_BIT .
Afin de conserver le support pour iPhone3G, je souhaite toujours compiler dans armv6 même sous iOS5.
Quelqu'un a-t-il trouvé une solution à cela?
Réponses:
Je viens de créer quelque chose aujourd'hui en spécifiant une cible de déploiement d'iOS 4.0. Avec seulement armv7 spécifié dans Architectures, Xcode m'a averti que pour prendre en charge tout ce qui est inférieur à iOS4.2, je devais inclure armv6 dans Architectures. Modifiez simplement ce champ, cliquez sur le bouton "+" lorsque la boîte de dialogue apparaît et entrez le littéral "armv6".
Dans mon cas, nous voulons que notre application fonctionne sous iOS4 et iOS5. Nous avons dû apporter quelques modifications pour que cela fonctionne correctement sous iOS5, mais tous ces changements ont été effectués avec des changements de code compatibles avec iOS4.
Nous avons également ajouté des fonctionnalités spécifiques à iOS5 de manière à permettre à l'application de s'exécuter sans se bloquer sous iOS4. Plus précisément, nous avons testé les capacités iOS5 avant d'essayer de les utiliser, et avons lié les bibliothèques iOS5 uniquement comme facultatif.
Ainsi, la prise en charge d'iPhone3G dans un monde iOS5 pourrait tout aussi bien signifier "nous voulons que notre application fonctionne sur iOS4 et supérieur (quelle que soit l'utilisation de toute fonctionnalité iOS5)" plutôt que "nous voulons nous assurer que notre application fonctionne sur un appareil plus ancien exécutant iOS5 ". Il y a une différence ici; Pensez-y. :-)
Quoi qu'il en soit, il est très facile d'ajouter le support armv6. Et je suppose que le point est le suivant: à un moment donné, quand il n'y a plus d'appareils armv6 à craindre (pour une raison quelconque), vous n'aurez pas à construire pour cela. Le point de vue d'Apple est que tout le monde devrait passer au matériel le plus récent dès que possible. Donc, dans ce monde, il n'est pas nécessaire que les outils par défaut soient autre chose que le dernier et le meilleur. :-) Heureusement (ou pas), nous, les développeurs, vivons dans le monde réel et reconnaissons que vous devez supporter des éléments plus anciens pendant un certain temps. Et je suppose que l'équipe de développement Xcode le sait aussi, c'est pourquoi vous pouvez ajouter le support armv6 tout simplement.
La réponse simple est que vous devez changer 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 que cela fonctionne.
assurez-vous également de définir cela dans Project AND Targets ... cela me coûte une heure pour le comprendre. l'avait fixé pour l'un mais pas pour l'autre. J'espère que cela t'aides. GLTA
Je pense qu'il y a une raison pour laquelle Apple a supprimé armv6 du paramètre standard.
J'ai compilé armv7 / armv6 avec le SDK iOS5, cependant, le compilateur armv6 a produit un code erroné en mode version. Après des heures à trouver une solution de contournement (en essayant llvm ou gcc avec différents niveaux d'optimisation), j'abandonne.
Donc, je reviens au SDK iOS 4.x tant que je prends en charge les anciens appareils armv6.
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?)
Peut-être que j'ai une certaine corruption de mémoire, cependant, sur le compilateur armv7 et sur iOSSDK <5.0, il se comporte comme prévu.
Meilleures salutations
Je ne sais pas si c'est encore une solution, mais j'ai découvert que le remplacement de la chaîne définie dans "architectures", qui était $ (ARCHS_STANDARD_32_BIT), par "armv6 armv7" m'a permis de compiler avec iOS5 comme base et iOS4 comme déploiement cible et passez la validation.
Je n'utilise pas de bibliothèques ou d'appels exclusifs à IOS5, mais j'ai l'intention de le faire dans ma prochaine version.
Je n'ai pas eu besoin de remplacer $ (ARCHS_STANDARD_32_BIT) par juste armv7 pour que l'application soit compilée et téléchargée sur l'App Store.
Comme suggéré par MarkGranoff, j'ai simplement ajouté armv6 en texte brut, en appuyant sur plus et en le tapant simplement sur la ligne deux.