Yann "Bug" Dubois

Développeur WordPress freelance à Paris
Flux RSS

Développer une application iPhone/iOS + Android sous GNU/Linux, c’est possible

20 February 2013 Par : Yann Dubois Catégorie : tech

L’univers du développement d’applications mobiles a été bouleversé ces derniers mois par deux faits majeurs qui révolutionnent les technologies et l’économie du secteur. A savoir, d’une part, le décollage du système open-source Android, qui est devenu de loin l’OS pour appareils mobiles (téléphones et tablettes) le plus populaire dans le monde, passant devant l’iOS de l’iPhone. Et d’autre part, la mise au point du système de développement cross-plateforme Phonegap, qui permet non seulement de construire très facilement des petites applications pour mobile en n’utilisant que des technologies “bon marché” longuement éprouvées issues du web (HTML5, CSS3, JavaScript), mais également pour la première fois de créer en une seule fois des applications déployables sur tous les environnements majeurs du marché (Android, iPhone, Blackberry, Windows Mobile, Symbian, WebOs). Suivant la baisse de la complexité de mise au point d’applications mobiles “universelles”, le coût de développement et de maintenance de ces dernières s’est énormément démocratisé. La bonne nouvelle pour les développeurs indépendant, et pour l’écosystème des applications mobiles dans sa globalité, c’est qu’il est enfin possible de faire rentrer leur modèle de développement dans les principes de l’open-source, même s’il faudra encore accepter quelques (douloureuses) compromissions pour déployer du code sur les appareils d’Apple.

iOS et Android : deux environnements aux approches radicalement différentes

Et tout d’abord, tout développeur open-source qui se respecte aura à coeur d’utiliser un environnement de développement lui-même basé sur les outils open-source dont la fiabilité et l’efficacité n’est plus à démontrer. Côté développement pour les appareils Android, aucun problème, puisque le système d’exploitation soutenu par Google est lui-même entièrement open-source, et fournit tout un environnement de développement ouvert (le SDK Android), utilisable très simplement sur les trois plateformes majeures du marché (GNU/Linux, MacOS, Microsoft Windows). Pour ce qui est d’Apple, longtemps leader du marché des smartphones et donc des applications mobiles évoluées, cet environnement se caractérise au contraire par son approche complètement propriétaire et cadenassée derrière un fournisseur unique, la marque à la pomme, qui tient à garder la main sur tous les maillons de la chaîne de développement, de commercialisation et de déploiement des applications mobiles tournant sur ses terminaux iOS.

Mangez des pommes…

Pendant longtemps, il était donc tout-à-fait impossible de développer quoi que ce soit destiné à tourner sur un appareil Apple, sans utiliser du matériel et des outils fournis officiellement par la marque. Sans Mac, pas moyen de développer pour iPhone. Cette politique n’a pourtant pas toujours eu cours chez Apple, car pour qui a la mémoire (très) longue, on peut se souvenir qu’il y a 20 ou 30 ans, à l’époque où Apple se targuait d’être le premier fournisseur de micro-ordinateurs pour les universités américaines, de nombreuses applications dédiées à l’internet balbutiant étaient mises au point sur des environnement ouverts (à base de systèmes *nix, de TCP/IP, d’outils GNU et de langage C), et immédiatement portées par les étudiants sur l’environnement des ordinateurs personnels Macintosh, faisant de cette plateforme l’outil personnel le plus innovant et le plus abordable pour accéder aux tous nouveaux protocoles du réseau. Ayant moi-même fait mes premiers pas sur #irc, Gopher, FTP et même le tout premier navigateur Web à une époque où ces outils existaient sur Mac mais pas sous Windows (ou alors avec des versions beta extrêmement instables, puisque la pile TCP-IP de Microsoft Windows était alors une catastrophe, jusqu’à l’avènement d’une version stable de Windows 95), je sais de quoi je parle. Tout ça pour dire qu’il fut un temps où les développements les plus innovants qui faisaient tout l’attrait du matériel Apple émanaient souvent de l’environnement Unix, sous licences universitaires, précurseurs de GNU/Linux et des logiciels libres.

On peut comprendre l’intérêt commercial d’une marque à vouloir contrôler toute la chaîne de valeur créée autour de son matériel, mais quand on fait tourner un OS qui est lui-même l’héritier manifeste des OS ouverts (Mac OSX, franchement, n’est-ce pas une sorte de GNU/Linux avec une jolie interface fluide ?), et qu’on a passé des décennies à condamner par ses publicités l’esprit monopolistique et propriétaire de ses concurrents, j’ai du mal à comprendre  la politique de cadenassage hermétique qui caractérisait l’environnement de développement autour de iOS et des appareils mobiles d’Apple jusque récemment.

Dans l’esprit, d’ailleurs, rien n’a changé : pour avoir le droit d’installer son propre code sur un appareil Apple, il faut toujours préalablement passer sous les fourches caudines de la firme de Cupertino. D’abord en payant (cher !) une licence de développeur qui n’est rien d’autre qu’une sorte de patente sans justification technique, puisque les ressources et documentations auxquelles elle donne accès sont largement disponibles ailleurs sur le web (et heureusement). Ensuite en signant et contresignant numériquement avec “l’empreinte” officielle de la marque chaque application destinée à être déployée sur les terminaux iOS. Enfin, en passant par le seul réseau de distribution officiel desdites applications (Applestore / iTunes). Tout est donc organisé en monopole. Et je passe sur les clauses ultra-limitatives des contrats qu’on n’a pas d’autre choix que de signer, dussent-ils torturer la conscience du développeur résolument adepte de l’open-source que je suis. Dans le genre verrouillé de chez verrouillé juridiquement, de nos jours, on ne fait pas mieux (ou pire).

Phonegap, la lumière au bout du tunnel

Mais techniquement, en tout cas, deux technologies ont introduit un coin dans la jolie façade monolithique de l’iPhone et de l’iPod. Tout d’abord, il s’agit du framework Phonegap, fondé sur le principe des applications web (webapps) entièrement développées avec les technologies standardisées et ouvertes du W3C (HTML5, CSS3, JavaScript). Lequel framework accepte aujourd’hui des plugins “natifs” qui permettent de plonger plus profondément dans les fonctions “propriétaires” des systèmes d’exploitations et des matériels, et de combler pratiquement totalement la faille entre les systèmes d’exploitation et les langages de programmation différents (Java pour Android, Objective-C pour l’iPhone). Des bibliothèques JavaScript standardisées jqTouch ou jQueryMobile apportent en complément la touche finale qui permet “d’habiller” les applications d’une interface très similaire et très familière qui “passera” de façon homogène sur tous les types d’appareils. Avec Phonegap, jQuery Mobile et quelques plugins “natifs” proposant les mêmes fonctionnalités sur les 2 plateformes, on peut désormais estimer qu’au moins 90% des fonctionnalités des deux types des téléphones les plus répandus peuvent être pilotées à partir d’un même code source.

Lequel code source peut être entièrement conçu à l’aide d’outil libres (type IDE Eclipse ou Netbeans), sur un système d’exploitation libre (Ubuntu GNU/Linux par exemple, ou l’un quelconque de ses cousins). Reste l’étape de la compilation et de l’inclusion des bibliothèques “propriétaires” à iOS, qui jusqu’à récemment ne pouvait être effectuée que sur un Macintosh exécutant l’environnement de développement Xcode. Or ce n’est plus le cas depuis que plusieurs service de compilation “dans le cloud” proposent désormais de compiler pour vous la version iOS de vos applications “à distance” et sans nécessité de posséder physiquement un appareil Apple (même si en théorie les fameux contrats évoqués ci-dessus imposent probablement toujours de détenir du matériel Apple pour développer pour Apple…). Le plus abouti de ces services, la plateforme Phonegap Build d’Adobe, est une petite merveille d’efficacité et de rapidité. Ajoutons, cerise sur le gâteau, que son utilisation est entièrement gratuite pour les producteurs de logiciel libre ! 🙂

L’Open source à la rescousse !

En résumé, il est aujourd’hui possible de concevoir, développer, coder de A à Z, compiler, et déployer une application iOS (qui sera bien évidemment également si on le souhaite compatible avec Android), en n’utilisant qu’une plateforme GNU/Linux et uniquement des outils libres (dont OpenSSL pour générer toutes les clés de cryptage nécessaires à la signature des applications et accès aux outils de diffusion en ligne Apple). En pratique, il sera toujours nécessaire d’avoir au moins un appareil compatible iOS pour tester et déboguer dans des conditions réelles l’application ainsi développée. Mais puisqu’on peut se rabattre sur un iPod Touch série 2 d’occasion (l’appareil le plus “rudimentaire” pouvant accepter des applications Phonegap 2.0), lequel peut se trouver sur eBay pour moins de 100 €, auxquels il faudra ajouter les 80 € annuels pour être “adoubé” développeur iOS officiel et autorisé à compiler des applications (y compris avec Adobe Phonegap Build, on ne pourra pas y couper). Coût net, 180€… c’est encore trop, mais c’est déjà beaucoup moins que s’il fallait s’acheter un Mac et des logiciels propriétaires aux licences onéreuses… et surtout, toutes ces technologies plus ouvertes ont libéré l’information sur le web, rendant beaucoup plus accessible au commun des mortels l’API de nos chers téléphones mobiles et autres baladeurs numériques. Les vannes de l’innovation sur mobiles et tablettes sont plus que jamais grandes ouvertes, on ne peut que s’en réjouir !

Liens utiles (tous en anglais…désolé) :

 

 

 

A lire également...

WordPress › Error

There has been a critical error on your website.

Learn more about debugging in WordPress.