Mon application ne fonctionne pas sur iPhone 3G (armv6, armv7)

de | 15 février 2012

Compilation armv6 et armv7 iPhone Xcode

L’iPhone 3G est sorti en juillet 2008 aux Etats Unis et en France. Il s’est imposé comme une version améliorée du premier iPhone en utilisant une puce 3G permettant d’accéder au réseau téléphonique mobile à heut débit (entre autre). Seulement, près de 4 ans après sa sortie, beaucoup de développeurs iOs délaissent ce modèle…

Pourquoi cela ne marche pas ?

La dernière version des outils de développement Apple, propose par défaut un mode de compilation qui ne permet tout simplement pas d’exécuter les applications produites sur iPhone 3G (et son équivalent iPod Touch).

Il s’agit d’un choix d’Apple qui consiste à inciter les développeurs à utiliser des outils plus performants pour développer leurs applications. En effet, l’entreprise préfère que les applications compatibles iPhone 3G soient moins nombreuses pour pousser les consommateurs vers la version 4S ou (bientôt) l’iPhone 5 et donc mettre en avant les fonctionnalités des nouveaux modèles. Mais, Apple laisse le choix aux développeurs de continuer à programmer des applications pour iPhone 3G (ce que nous faisons dans l’entreprise si l’application le permet).

Voici la procédure pour paramétrer votre projet XCode afin d’autoriser la compilation pour iPhone 3G.

Comment régler le problème ?

La procédure est simple : la compilation est seulement autorisée pour les processeurs armv7, il faut donc changer cela et rendre compatible armv6 et armv7 (soit l’ancienne et la nouvelle génération de processeurs iPhone).

Pour cela, rendez-vous dans les paramètres de votre projet iOS dans XCode / Build Settings / Architectures : vous devriez voir la ligne « armv7 ».

Build settings de votre projet XCode

Build settings de votre projet XCode

Ensuite modifier cette ligne en cliquant dessus, puis sur « other » :

Xcode : architectures / other

Xcode : architectures / other

Supprimer la ligne et ajouter une nouvelle ligne en indiquant « armv6 armv7 » :

Armv6 et armv7 pour la compilation iPhone

Armv6 et armv7 pour la compilation iPhone

Le tour est joué, compilez votre application et testez sur un iPhone 3G : cela doit fonctionner ! (attention à la version cible de iOS pour la compilation : privilégier une version inférieure ou égale à iOs 4.2 pour une bonne compatibilité)

Faut-il continuer à développer pour iPhone 3G ?

La question est difficile car dans l’absolu, plus votre application sera compatible avec un nombre important de machines et plus elle aura du succès.

Dans la pratique, il faut surtout comprendre quelles modifications seront à effectuer sur votre application pour la rendre compatible 3G. Il faudra aussi prendre en compte les modifications à effectuer et les limitations du matériel (Open GL moins performant, auto-focus absent sur le capteur photo, localisation très peu précise, etc.).

Pour finir, on suppose que la part de marché des iPhone 3G est assez faible. Les consommateurs préfèrent maintenant largement les modèles 3GS, 4 ou 4S et les anciens modèles ne sont plus commercialisés par Apple.

4 réflexions au sujet de « Mon application ne fonctionne pas sur iPhone 3G (armv6, armv7) »

  1. coma ethilique

    Bonjours,
    Ce tuto me donnera-t-il accés aux application que mon iPhone 3g ne supporte pas ?
    Merci.

  2. Nicolas Auteur de l’article

    Bonjour « coma »,

    Ce tutos est uniquement destiné aux développeurs iPhone et iPad (iOS), il ne concerne pas les utilisateurs. Il explique comment utiliser un iPhone 3G pour tester des applications créées avec XCode 4 dans sa configuration de base.

    A bientôt.

  3. Dodo

    Je comprends pas une chose ? Est ce que Apple ne me laisse pas le choix d’ utiliser l iPhone 3G et m oblige a acheter toujours le nouveau (sa nouvelle invention) ???!!!!

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.