Apache Cordova 3.3 de zéro

54
Alexandre PEREIRA

description

Apprendre les fondamentaux de Apache Cordova (3.3) pour faire tourner son environnement de test et commencer à développer sur son mac OS.

Transcript of Apache Cordova 3.3 de zéro

Page 1: Apache Cordova 3.3 de zéro

Alexandre PEREIRA

Page 2: Apache Cordova 3.3 de zéro

Alexandre PEREIRAHead of Front-End, Social & Mobile Development

- L’OCCITANE en Provence- foxhype

- Spécialiste Front-End / Mobile- Développeur Sencha / PhoneGap- Google Wildfire Contributor- spacefox coder

[email protected]@foxhype.com

http://www.linkedin.com/in/pereiraalexandre

@alxndr_pereira

Page 3: Apache Cordova 3.3 de zéro

I - Généralités- C’est quoi PhoneGap ?- PhoneGap & Cordova.

II - Les bases- Pré-requis & logiciels- Installer son environnement de dev

III - Les mains dans le cambouis- Architecture de base- Hello World - Etudions le...- Géolocalisation- Notifications- Camera

Sommaire

Page 4: Apache Cordova 3.3 de zéro

C’est quoi PhoneGap ?

?

I - Généralités

Page 5: Apache Cordova 3.3 de zéro

I - C’est quoi PhoneGap ?

PhoneGap (Cordova) est un pont de développement, nous permettant d’encapsuler du code client Web dans une application native (iOS, Android, Windows Phone etc...). C’est en gros une grosse webview html/css/js dans une app.

Page 6: Apache Cordova 3.3 de zéro

PhoneGap (Cordova) va également nous permettre de communiquer avec la machine (le smartphone, la tablette), via des connecteurs Javascript internes à leur développement ou via des connecteurs indépendants : les plugins.

I - C’est quoi PhoneGap ?

Page 7: Apache Cordova 3.3 de zéro

PhoneGap & Cordova I - Généralités

Page 8: Apache Cordova 3.3 de zéro

I - PhoneGap & Cordova

La majorité des gens ne voient pas la différence entre ces deux noms, de par leur intime relation. Vous allez rencontrer ces noms souvent dans votre carrière de développeur mobile. Voyons que signifient-ils.

Pour faire simple PhoneGap est une distribution gratuite de Cordova (qui l’est aussi pour le moment...). Elles sont basées sur le même moteur et les mêmes technologies.

Page 9: Apache Cordova 3.3 de zéro

Lequel utiliser ?

Pour le moment nous allons partir d’un socle Cordova, car il est plus récent : Version 3.3En effet PhoneGap profite des update de Cordova, mais parfois avec un petit décalage.

Par la suite libre à vous d’utiliser le framework qui vous convient le mieux.

I - PhoneGap & Cordova

Page 10: Apache Cordova 3.3 de zéro

Pré-requis et logicielsII - Les Bases

Page 11: Apache Cordova 3.3 de zéro

II - Pré-requis et logiciels

PhoneGap / Cordova se basent sur des connaissances clients pour permettre aux développeurs la construction d’applications mobile sans avoir de connaissances approfondies en langages natif.

Avec les langages suivants, le développeur peut très bien développer un projet mobile à destination d’iOS ou d’Android

Javascript HTML (HTML5)

CSS (CSS3)

Le JS est une brique très importante pour le développement d’applications via PhoneGap / Cordova, car l’intégralité des manipulations des connecteurs clients -> machine vont se faire dans ce langage.

Page 12: Apache Cordova 3.3 de zéro

II - Pré-requis et logiciels

La pluralité des plateformes nous oblige à utiliser un panel d’IDE pour nos développements à destination des machines.Voici le topo:

xCode Eclipse Visual Studio

Page 13: Apache Cordova 3.3 de zéro

II - Pré-requis et logicielsProblème, Ils ne fonctionnent pas tous sur le même OS. A vous de choisir l’environnement que vous utiliserez en fonction de vos besoins. Il faudrait peut-être même parfois émuler un OS... :(

+

+

+

=

=

=

Page 14: Apache Cordova 3.3 de zéro

II - Pré-requis et logicielsMa recommandation : Essayons de couvrir la majorité du parc pour notre cours avec les iPhone et Android, cela nous permettra de rester sur un seul OS et de minimiser le nombre de nos IDEs.

+

Nous allons donc utiliser Xcode et la version modifiée d’Eclipse comprise dans l’Android Developer Tool de Google.

Xcode va gérer la partie build iOS.Eclipse quant à lui va gérer la partie Android.

Page 15: Apache Cordova 3.3 de zéro

II - Pré-requis et logicielsCompte développeur : Ne pas oublier également le compte développeur. Leurs prix varient et leurs droits également. Par exemple, ils vous faut le compte sur Android juste pour publier, alors que sur iOS il est utile beaucoup plus tôt.

Page 16: Apache Cordova 3.3 de zéro

Installer son environnement de devII - Les Bases

Page 17: Apache Cordova 3.3 de zéro

II - Installer son environnement de dev

Sur Android, rien de plus simple : Téléchargez l’Android Developer Tool, disponible sur le site dédié de Google

http://developer.android.com/sdk/index.html

Cet ADT contient tout ce qui vous est nécessaire pour faire vos «packages» Android :

- Un IDE modifié prêt à l’emploi (Eclipse)- Le SDK, contenant les librairies Android, l’émulateur etc... quenous allons utiliser avec Cordova.

Page 18: Apache Cordova 3.3 de zéro

II - Installer son environnement de devPetite subtilité, On va aller ajouter une ligne au fichier .bash_profile de la machine.

# PATH ANDROID #export PATH=${PATH}:/Users/VOTREUSER/android-sdks/platform-tools:/Users/VOTREUSER/android-sdks/tools

Ce fichier gère en partie les alias de commande sur votre Mac, il permet l’accès au SDK Android fraichement téléchargé à nos commandes Cordova

Page 19: Apache Cordova 3.3 de zéro

II - Installer son environnement de dev

$ defaults write com.apple.finder AppleShowAllFiles 1

Pour voir les fichiers cachés sur votre Mac, lancer le terminal et taper cette petite ligne de commande et redémarrez Finder :

Page 20: Apache Cordova 3.3 de zéro

II - Installer son environnement de dev

Pour iOS rien de bien complexe dans un premier temps :

Téléchargez Xcode, gratuit sur le Mac AppStore.

Nous verrons la suite de la configuration dans unsecond temps avec le compte developpeur.

Page 21: Apache Cordova 3.3 de zéro

II - Installer son environnement de dev

Et PhoneGap/Cordova,C’est la qu’on va commencer à s’amuser un peu.

Les nouvelles version de PhoneGap (3.xx) /Cordova (3.xx) sont en effet simplifiée par l’utilisation de commandes qui nous permettent d’optimiser et de grouper nos dossiers / actions / builds. Ils faut donc installer ces commandes.

1) Avoir au préalable NodeJS installé. Pour pouvoir lancer les commandes de récupération de package NPM.http://nodejs.org/

Pourquoi ?C’est un standard que les grands noms du JS sont en train de mettre en place en hébergeant sur la même plateforme leurs logiciels et outils, pour rendre leur récupération plus simple mais également leurs updates/correctifs plus faciles d’accès.

Page 22: Apache Cordova 3.3 de zéro

II - Installer son environnement de dev

Une fois NodeJS et la commande «npm» installée, nous allons pouvoir récupérer Cordova simplement, via la commande suivante sur notre Terminal :

$ sudo npm install -g cordova

Rappel et décryptage de cette commande : sudo : cela indique au terminal que vous voulez lancer la commande en tant qu’administrateur de la machine. Il peut vous être demandé un mot de passe juste après pour valider votre identité.

npm : c’est notre fameux NodeJS

install : c’est une sous-commande de npm, qui indique que vous voulez installer le logiciel qui va suivre.

-g : et la globalité des dépendances requises

cordova : le nom du logiciel à installer avec npm. Voici notre cordova !!

Page 23: Apache Cordova 3.3 de zéro

II - Installer son environnement de dev

Une fois le chargement terminé, on test la réactivité de Cordova

$ cordova

Par la suite, c’est avec cette commande que nous allons créer, modifier nos applications natives.

Page 24: Apache Cordova 3.3 de zéro

II - Installer son environnement de dev

Cela semble bon. Nous voilà prêts et armés jusqu’aux dents !

Page 25: Apache Cordova 3.3 de zéro

Architecture de baseIII - Les mains dans le cambouis

Page 26: Apache Cordova 3.3 de zéro

III - Architecture de baseComme nous l’avons aperçu, les applications PhoneGap ont la structure suivante :

Page 27: Apache Cordova 3.3 de zéro

III - Architecture de base

Cela se traduit par un dossier «client» WWW où vous allez mettre votre code de base.

C’est ici que se situe votre application (avant passage à PhoneGap/Cordova).On y déposera nos fichiers HTML/CSS/JS.

Page 28: Apache Cordova 3.3 de zéro

III - Architecture de baseEt des dossiers de build par plateforme.Par exemple ici : un pour iOS, un pour Android

Page 29: Apache Cordova 3.3 de zéro

Hello WorldIII - Les mains dans le cambouis

Page 30: Apache Cordova 3.3 de zéro

III - Hello World

Maintenant, au boulot !Créons notre première app.

Utilisons pour cela la commande «create» de Cordova au sein de notre dossier de travail, elle fera tout le sale boulot pour nous...

$ cordova create HelloWorld com.example.hello "Hello World"

Et hop, le projet est là. Mais sans les déclinaisons plateformes pour le moment.

Page 31: Apache Cordova 3.3 de zéro

III - Hello World

Créons donc la déclinaison iOS.

$ cd HelloWorld //Je vais dans le dossier HelloWorld $ cordova platform add ios // Je crée la version iOS

Et voilà ! Mon dossier d’application existe, je n’ai plus qu’à le compiler

Page 32: Apache Cordova 3.3 de zéro

III - Hello World

$ cordova build ios

Pour cela 2 solutions,

La commande : (que je ne recommande pas)

ouxCode, via le fichier Hello World.xcodeproj :

Page 33: Apache Cordova 3.3 de zéro

Note : «cordova prepare»

$ cordova prepare ios$ cordova prepare android

$ cordova prepare

Si vous modifiez le dossier www de votre projet (vos fichiers html/js/css) il vous faudra mettre à jour les versions de l’application (-> ios, ->android), pour cela il faut tout simplement lancer la commande prepare dans le projet.

Page 34: Apache Cordova 3.3 de zéro

III - Hello World

Voyons si il tourne, au moins sur le simulateur iPhone d’Xcode,Pour cela, sélectionnons le simulateur voulu (à droite) et cliquons sur «Run», cela va lancer un build si l’appli n’est pas déjà compilée et la lancer sur le device demandé.

Petit rappel des raccourcis clavier de Xcode : CMD + MAJ + K = Clean du buildCMD + B = Build sans RunCMD + R = Build si l’app n’est pas encore buildée et Run sur le device sélectionné

Page 35: Apache Cordova 3.3 de zéro

III - Hello World

Et voila, ce semble bien fonctionner.Notre code HTML/JS tourne dans une app «native» iOS !

Page 36: Apache Cordova 3.3 de zéro

III - Hello World

On fait de même pour Android

$ cordova platform add android

Page 37: Apache Cordova 3.3 de zéro

III - Hello World

$ cordova build android

Même motif, même punition: 2 solutions pour compiler Android

La commande : (que je ne recommande toujours pas)

ouEclipse :

Page 38: Apache Cordova 3.3 de zéro

III - Hello WorldEt pour lancer l’application :

Clique droit sur le Projet > Run As > Android ApplicationCela va vous lancer l’app sur l’émulateur intégré, ou si un appareil est connecté, il vous donnera le choix.

Page 39: Apache Cordova 3.3 de zéro

Etudions tout ça...III - Les mains dans le cambouis

Page 40: Apache Cordova 3.3 de zéro

III - Etudions tout ça

cordova/CordovaLib/

Projet/Projet.xcodeprojplatform_www/

www/

commandes terminal librairie Cordova iOSlibrairie Projetfichier projet Xcodesource js cordova pour iOSdossier de l’application html/js

Architecture PhoneGap/CordovaiOS (iPhone/iPad, ...)

Page 41: Apache Cordova 3.3 de zéro

III - Etudions tout ça

src/gen/

Android 4.2.2/Android Private Libraries

assets

bincordova

libsres

AndroidManifest.xml

librairie java Projetfichiers compiléslibrairie Androidlibrairie Cordova/Androiddossier de l’application html/jslibrairie Projet customisable

ressources projets

Architecture PhoneGap/CordovaAndroid

Page 42: Apache Cordova 3.3 de zéro

GéolocalisationIII - Les mains dans le cambouis

Page 44: Apache Cordova 3.3 de zéro

III - Géolocalisation

On va ajouter le plugin cordova nécessaire au fonctionnementde la géolocation :

$ cordova plugin add org.apache.cordova.geolocation

Si vous avez créé toutes les plateformes (ios/android) cela s’appliquera sur l’ensemble des versions de votre application. Sinon il faudra relancer cette commande.

Page 45: Apache Cordova 3.3 de zéro

Note : Plugins

Certaines fonctionnalités vous demanderont l’installation deplugins via le terminal, n’hésitez pas à vérifier la référenceavant d’essayer votre build.

http://cordova.apache.org/docs/en/3.3.0/guide_cli_index.md.html#The%20Command-Line%20Interface_advanced_plugin_options

$ cordova plugin add org.apache.cordova.{plugin}$ cordova plugin rm org.apache.cordova.{plugin}

Page 46: Apache Cordova 3.3 de zéro

III - Géolocalisation

AndroidManifest.xml

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />

Sur Android il faut vérifier que les permissions de l’application sontsuffisantes pour exécuter la fonctionnalité, cela se passe dansAndroidManifest.

NB : le système des permissions Android est très important dans toute application, il vous sera utile de nombreuses fois de les modifier. Un élément vital d’Android.

Page 47: Apache Cordova 3.3 de zéro

III - Géolocalisation

var onSuccess = function(position) {    alert('Latitude: '          + position.coords.latitude          + '\n' +          'Longitude: '         + position.coords.longitude         + '\n' +          'Altitude: '          + position.coords.altitude          + '\n' +          'Accuracy: '          + position.coords.accuracy          + '\n' +          'Altitude Accuracy: ' + position.coords.altitudeAccuracy  + '\n' +          'Heading: '           + position.coords.heading           + '\n' +          'Speed: '             + position.coords.speed             + '\n' +          'Timestamp: '         + position.timestamp                + '\n');};

function onError(error) {    alert('code: '    + error.code    + '\n' +          'message: ' + error.message + '\n');}

navigator.geolocation.getCurrentPosition(onSuccess, onError);

javascript

Page 48: Apache Cordova 3.3 de zéro

NotificationsIII - Les mains dans le cambouis

Page 50: Apache Cordova 3.3 de zéro

III - Notifications

terminal

function alertDismissed() {    // do something}

navigator.notification.alert(    'You are the winner!',  // message    alertDismissed,         // callback    'Game Over',            // title    'Done'                  // buttonName);

javascript

$ cordova plugin add org.apache.cordova.dialogs$ cordova plugin add org.apache.cordova.vibration

Page 51: Apache Cordova 3.3 de zéro

CameraIII - Les mains dans le cambouis

Page 53: Apache Cordova 3.3 de zéro

navigator.camera.getPicture(onSuccess, onFail, {

quality: 50,destinationType: Camera.DestinationType.FILE_URI

});

function onSuccess(imageURI) {    var image = document.getElementById('myImage');    image.src = imageURI;}function onFail(message) {    alert('Failed because: ' + message);}

javascript

III - Camera

terminal

$ cordova plugin add org.apache.cordova.camera

Page 54: Apache Cordova 3.3 de zéro

http://cordova.apache.org/docs/en/3.3.0/

La suite ? Allons faire un tour sur la documentation de PhoneGap/Cordova et voyons les possibilités :

Acceleromètre, Camera, Capture, Compass, Connection, Contacts, Device, Events, File, Geolocation, Globalization, InAppBrowser, Media, Notification, SplashScreen, Storage