Mobile

PhoneGap, la solution de développement d’applications mobiles multiplateformes

Publié le : Auteur: Abdenour BOUATELI 5 commentaires
PhoneGap

Introduction

Aujourd’hui, grâce à l’évolution des langages HTML, CSS et JS ainsi que des navigateurs mobiles (Safari, Webkit, Opera, Firefox…), il devient possible de créer des « web apps » rivalisant avec les applications natives.

PhoneGap est justement une des solutions permettant le développement d’applications mobiles pour Android, iOS, Windows Phone, Symbian, Bada et Blackberry OS, en utilisant des langages HTML, CSS et JS.

j2SED

http://i.stack.imgur.com/j2SED.png

 

Avec PhoneGap, il est par exemple possible d’accéder aux fonctionnalités suivantes directement en javascript :

Fonctionnalité Description
Accelerometer écouter le capteur de mouvement
Camera capturer une photo via l’application dédiée
Capture capturer les flux son/image/vidéo du téléphone
Compass orientation magnétique (N/S/E/O) de l’appareil
Connection informations sur la connectivité DATA
Contacts accès à la base de contacts
Device identifiant du smartphone
Event accès aux événements natifs (batterylow, volumeupbutton)
File lecture / écriture de fichiers
Geolocation réception des coordonnées géographiques
Media lecture de fichier audio
Notification notifications visuelles, sonores et tactiles
Storage accès à une base de données SQL

 

Qu’est qu’un PhoneGap ?

PhoneGap est un framework dont l’objectif est de réduire le fossé (gap) qui sépare les applications web des applications natives. Plus précisément, il permet d’encapsuler une application web dans une application native et de lui fournir des outils supplémentaires.

Plug-in : JS/Natif

Tous les plugins PhoneGap sont constitués d’une classe Javascript qui expose la fonctionnalité dans l’application HTML/JS (boîte rouge dans la figure ci-dessous). La classe JavaScript (boîte verte dans la figure ci-dessous) communique à la couche native grâce à la classe de base en utilisant PhoneGap PhoneGap.exec(). La passerelle native de PhoneGap invoque ensuite le code natif du plugin (boîte de violet dans la figure ci-contre).

sdkphonegap

Image empruntée sur http://wiki.phonegap.com

 

Comment développer avec PhoneGap

Suivant la plateforme sur laquelle vous souhaitez développer votre application, la configuration nécessaire change.

Le tableau ci-dessous récapitule la configuration type par appareil.

IOS Android WindowsPhone
  • MAC OS X Snow Leopard
  • La certification iOS développeur (pour publier votre app)
  • Xcode
  • Le SDK (kit de développement) de PhoneGap
  • Eclipse 3.4+
  • Le SDK Android
  • Le plugin ADT pour Eclipse (Outils de développement  Android)
  • Le SDK de PhoneGap
  • Windows 7 ou Vista SP2
  • Le SDK des Windows Phone
  • Le SDK de PhoneGap

 

http://phonegap.com/download/

 

Avantages/Inconvénients

Les points forts :

  • Bonne intégration avec jQueryMobile (jQM)
  • Développement & Déploiement rapide des applications mobiles versus web.
  • Les plugins fournis en standard couvrent à 80% du besoin pour des applications catalogues/consultation

Les points faibles :

  • L’utilisation des méthodes de callback est une charge non-négligeable
  • Problème de portabilité avec des plugins spécifiques PhoneGap. Seule « l’API » exposée par les méthodes JavaScript reste stable entre plateformes, non pas le cœur de PhoneGap.
  • Le niveau de qualité des plugins spécifiques est très hétérogène
  • PhoneGap n’échappe pas non plus aux contraintes habituelles du web : les différences de rendu et comportement entre navigateurs
  • Développement assez complexe d’une application dite« offline » : il faut combiner manuellement le localStorage HTML5, gérer de la synchronisation avec le serveur ensuite et  traiter les erreurs JSON/Ajax.

Conclusion

Il ne faut pas voir PhoneGap comme une solution magique pour tout le développement mobile multiplateforme, mais il abaisse considérablement la barrière à l’entrée pour le développement sur mobile. En effet, il permet à des développeurs web de « porter » des programmes sur différents systèmes sans apprendre les langages spécifiques à chaque plateforme.