Actualités

[01/02/2017] Smile s’impose sur le marché de l’intégration de solutions Open Source en annonçant l’ouverture de 300 postes en 2017

À travers cette annonce stratégique, Smile se positionne comme l’un des principaux créateurs d’emplois de la filière IT en ouvrant de nombreux postes dans ses cinq pôles d’activité et au sein de ses équipes commerce, conseil et gestion de projets.

[18/01/2017] Smile vainqueur du prix expert au LoRa IoT Challenge !

Les 17 et 18 janvier, lors d’un Hackathon organisé sur deux jours par l’Usine Digitale, l’équipe de Smile & Neopixl s’est démarquée dans la catégorie « Smart-cities » parrainée par Schneider Electric. 25 équipes étaient en lice pour ce challenge de moins de 48h !

[28/12/2016] Smile vous souhaite une excellente année 2017

Toute l'équipe Smile vous souhaite une bonne année 2017 !

Toutes les actualités picto
       

Vous avez besoin de mettre à jour votre Lecteur Flash Flash 7

Guillemet ouvrant l'actualité des solutions
et des technologies open source Guillemet fermant
picto

Développement mobile cross-platform avec PhoneGap

PhoneGap est un framework de développement mobile permettant de développer des applications multi-plateformes (iPhone, Android, BlackBerry, Symbian et Palm) en utilisant les standards que sont HTML, CSS et JavaScript.

Architecture de PhoneGap

PhoneGap se présente sous la forme d'une bibliothèque utilisant le SDK natif de la plateforme cible. Il ne permet donc pas de s'affranchir des SDK et des contraintes éventuelles liées à ces derniers, notamment avec Apple. Par ailleurs, le mode de construction varie selon la plateforme cible. Il est par exemple nécessaire de recompiler la bibliothèque à l'aide d'un script Ruby pour Android afin d'obtenir un JAR, ou encore d'utiliser make pour la recompiler pour iPhone afin d'obtenir un PKG à installer dans XCode.

Le développement avec PhoneGap se base sur HTML + CSS pour les vues et utilise JavaScript pour le dynamisme. La bibliothèque JavaScript étant la même quelque soit la plateforme cible, il devient possible de développer une même application en HTML + CSS + JavaScript pouvant s'exécuter sur toutes les plateformes de manière identique. Cette bibliothèque JavaScript offre par ailleurs un accès aux éléments matériels du téléphone, normalement hors de portée du JavaScript, comme l'accéléromètre, l'appareil photo, les contacts ou encore le GPS. Là encore, l'utilisation de la même bibliothèque quelque soit la plateforme cible permet d'utiliser les composants matériels du téléphone d'ordinaire accessibles uniquement au travers du SDK. Plus besoin de connaître toutes les APIs de chacun des fabriquants de système mobile.

Voici un exemple de code qui lit les coordonnées fournies par l'accéléromètre et les affiche dans un message d'alerte JavaScript :

function onSuccess(acceleration) {   
 
    alert('Acceleration X: ' + acceleration.x + '\n' +   
 
          'Acceleration Y: ' + acceleration.y + '\n' +   
 
          'Acceleration Z: ' + acceleration.z + '\n');   
 
};   
 
function onError() {   
 
    alert('onError!');   
 
};   
 
var options = { frequency: 3000 };  // Update every 3 seconds   
 
var watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options);  

Et un exemple qui affiche le nom de tous les contacts du téléphone dans la console JavaScript :

function onSuccess(contacts) {   
 
    for (var i=0; i<contacts.length; i++) {   
 
            console.log("Display Name = " + contacts[i].displayName;   
 
        }   
 
};   
 
function onError() {   
 
    alert('onError!');   
 
};   
 
var options = new ContactFindOptions();  
 
options.filter="";   
 
filter = ["displayName"];   
 
navigator.service.contacts.find(filter, onSuccess, onError, options);  

De nombreux avantages pour peu d'inconvénients

Les avantages de PhoneGap sont nombreux :

  • Le développement s'effectue en HTML, CSS et JavaScript, des langages très diffusés
  • Aucune phase de génération de code pouvant complexifier ou ralentir les développements
  • Les fonctionnalités des environnements de développement fournies par chaque éditeur de système mobile sont conservées car PhoneGap se greffe dessus et ne les remplace pas. Par ailleurs, de très bon tutoriels de prise en main sont disponibles pour démarrer au mieux un développement, quelles que soient les plateformes ciblées
  • Unification de l'API d'accès au ressources matérielles des téléphones (accéléromètre, géolocalisation, appareil photo, etc.)
  • Aucune restriction d'accès à l'Apple Store et ceci même quand Apple avait durci son règlement en interdisant les applications développées avec d'autres technologies que celles prévues par lui. Par ailleurs, PhoneGap est même partenaire d'Apple [1].

Il existe toutefois quelques inconvénients à PhoneGap :

  • Il n'est pas possible de debugger le JavaScript car il n'y a aucun accès au moteur JavaScript des émulateurs et des outils tels que FireBug ne sont aujourd'hui pas disponibles. Il est uniquement possible de tracer son application à l'aide de logs dans la console JavaScript, cette dernière étant consultable depuis les différents environnements de développement.
  • Le JavaScript reste un langage possédant quelques lacunes (typage faible, syntaxe parfois exotique, erreurs peu parlantes, etc.) ce qui peuvent ralentir les développements, à fortiori quand le debug est impossible

PhoneGap est un framework prometteur qui permet de s'abstraire de la plateforme cible et de mutualiser les développements mobiles. Il est concurrencé par Titanium Appcelerator sur lequel nous reviendrons dans un prochain article.

[1] http://www.jdmag.com/2009/11/28/apple-collaborates-with-phonegap/

Philippe De Oliveira
picto

Commentaires

       
yous
Merci pour cet article.
Surement, le futur sera de développer des applications pour différentes plateforms en une seule fois pour réduire les couts et le temps de dév.
Voici un article qui traite le sujet :

http://www.wikidroid.fr/news/developpement-mobile-cross-plateform/

jeudi 02 décembre 2010 @ 15:30
       

       
Je me demande effectivement quel est le meilleur : phonegap ou titanium ?
lundi 01 juillet 2013 @ 7:30
       

       
Excellent article, pour moi PhoneGap est le meilleur. je ne suis pas un développeur mobile mais d'après un ami à moi, Phonegap est plus performant et plus efficace.

Bon courage
lundi 27 janvier 2014 @ 9:10
       

       
Casquette Snapback - http://www.casquettesbonnets.com
Les fonctionnalités des environnements de développement fournies par chaque éditeur de système mobile sont conservées car PhoneGap se greffe dessus et ne les remplace pas.
mercredi 08 avril 2015 @ 10:30
       
Ecrire un nouveau commentaire