103 votes

Est-il possible de cibler les anciennes versions d'iOS en utilisant Xcode 4.2 et le SDK iOS 5 ?

J'ai récemment téléchargé le paquet Xcode 4.2 avec iOS 5 SDK et j'ai immédiatement remarqué que je ne peux pas utiliser mon iPhone 3Gs avec iOS 4.2.1 pour le débogage. Je suis seulement capable de déboguer et de tester sur mon iPhone 4 avec iOS 5 installé.

Pour tous mes appareils fonctionnant sous un iOS inférieur à 5.0, Xcode indique simplement "Finished running for iPhone3GS" et ne l'exécute pas. J'ai défini ma cible de déploiement à 3.0 parce que je n'utilise pas de fonctionnalités dans mon application au-dessus de 3.0 et je veux être capable de cibler toutes les versions 3.0 ou supérieures. Tous mes profils de provisionnement sont installés et à jour.

J'ai quitté et redémarré xcode, j'ai nettoyé la construction plusieurs fois. J'ai essayé d'ajouter armv6 dans les paramètres de construction de l'architecture, mais rien ne me permet de construire et d'exécuter mon application sur mon vieux téléphone avec ios 4.2.1.

Ma question est la suivante : est-il possible de faire fonctionner des applications avec le nouveau SDK pour des versions d'iOS inférieures à 5 ? Comment puis-je être sûr que mon application fonctionnera toujours sur les versions inférieures d'iOS si je ne peux pas les installer sur mon ancien téléphone ?

Edit : OK, il semble que le SDK 5 d'iOS ait abandonné le support de l'armv6 par défaut. Ce que vous devez faire est d'ajouter armv6 dans le champ Architectures sous Build Settings pour votre cible et votre projet. Votre application sera alors capable de fonctionner sur les appareils iPhone 3G. La réponse se trouve ici Comment construire pour les architectures armv6 et armv7 avec iOS 5

153voto

mmorris Points 3121

J'ai eu le même problème en essayant de faire fonctionner un projet Xcode 4.2 nouvellement créé sur un iPhone 3G 4.2.1. Voici comment j'ai réussi à le faire fonctionner.

1) Changez les "Build Settings" ==> "Architecture" de la cible de "Standard (armv7)" à "other". Ajoutez armv6 et armv7.

2) Changez les "Build Settings" ==> "Valid Architecture" de la cible en armv6 et armv7.

3) Changez les "Build Settings" ==> "iOS Deployment Target" de la cible pour iOS 4.2.

enter image description here

4) Ouvrez les projets *-Info.plist, supprimez le paramètre "Required device capabilities" (notez que cela nécessite armv7). enter image description here

J'ai compris cela lorsque j'ai essayé d'ajouter manuellement l'application par l'intermédiaire de l'organisateur et que cela a été signalé :

Impossible d'installer l'application

Le fichier Info.plist de l'application /Users/.../TestsDebug.app spécifie les exigences de capacité de l'appareil, qui ne sont pas satisfaites par l'iPhone 3G de Dev.

Tout devrait fonctionner après cela. Vous parlez d'un PITA.

12voto

Aleksejs Mjaliks Points 3340

Aller à Xcode > Préférences > Téléchargements et installer un support de débogage pour les anciennes versions d'iOS.

3voto

flizit Points 113

Mmorris m'a aidé à résoudre le problème... Dans le fichier Info.plist, j'ai dû définir les capacités requises du périphérique à armv6, et non à armv7. J'espère que cela aidera d'autres personnes.

1voto

Foo Bah Points 11566

Vous devez connecter le téléphone et ensuite aller dans l'organisateur. Xcode devrait automatiquement demander l'ancienne version.

Consultez la page du développeur pour plus d'informations. Elle a été décrite dans les notes de la version bêta 4.2.

1voto

Greg Points 11

J'ai découvert que je devais ajouter armv6 aux architectures, mais cela ne fonctionne toujours pas. Et maintenant j'ai enlevé armv7 des capacités requises, et c'était tout ! Cela a fonctionné !

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