Multi Plateforme
Multi Plateforme
Multi Plateforme
Bien que les deux géants que sont Google et Apple représentent une large majorité du marché
des smartphones, tablettes, smart-tv et autres appareils connectés, ce dernier n’en est pas
moins très fragmenté avec un certain nombre d’autres acteurs dont évidemment Windows
Phone mais également BlackBerry OS, Firefox OS, Sailfish OS, Tizen…
La tendance actuelle au "tout natif" n’est donc pas sans poser de sérieuses difficultés :
Développer par exemple une même application native sur les 3 systèmes les plus répandus
nécessite des connaissances spécifiques de 3 environnements et langages différents avec
aucune portabilité possible si ce n’est une éventuelle architecture. Une telle optique peut
rapidement revenir à doubler voire tripler les ressources nécessaires à un projet et
maintenance comprise, représente un investissement considérable tout au long de la durée
de vie de l’application.
Jeux vidéos
Applications Grand publique
Applications Professionnelles
1
Extrait de « Choix de développement mobile multiplateforme, application native ou hybride ? »
Andy CHRISTEN
5
Natif
a. Android (Java), IOS(Objectif-C), Windows(C++), …
Web
a. HTML, CSS, JavaScript
Intégration fine
Interface et ergonomie
Haute performance
Outillage
Markets
• Plateforme spécifique
•Temps et argent
•Problème de ressources
• Plusieurs plateformes
•Bonne interaction
•Performance
•IHM professionnelle
•Gain de temps / argent
Natif
•IHM
•Hautes performances
•Outillages
•Markets
WebMobile
•Cross-platforms
•Gain de temps / argents
•Ressources
•Nombreuses solutions
8. WebMobile Hybride
o Il suffit de maîtriser ceux offerts par la solution choisie qui lui compilera une
application native spécifique à chaque plateforme à partir de son unique projet
de départ.
2. Avantages
Permet de :
•Embarquer son application Web Mobile au sein d’une application native
•Bénéficier d’un pont entre le système et notre application Web Mobile
•Accéder aux markets
a. Exemple Cordova
a. Exemple Xamarin
8
10. HTML5
9
11. CSS3
Lien 1 : http://pierre-giraud.com/html-css/cours-complet/cours-html-css-presentation.php
Lien 2 : https://openclassrooms.com/courses/apprenez-a-creer-votre-site-web-avec-html5-et-css3
Lien 3 : http://41mag.fr/apprendre-le-html5-tutoriel-complet
Lien 4 : https://openclassrooms.com/courses/dynamisez-vos-sites-web-avec-javascript
10
1. If you want to deliver a web application (or just a web page) as a part of a client
application, you can do it using WebView.
2. The WebView class is an extension of Android's View class that allows you to display
web pages as a part of your activity layout.
3. It does not include any features of a fully developed web browser, such as navigation
controls or an address bar. All that WebView does, by default, is show a web page.
4. A common scenario in which using WebView is helpful is when you want to provide
information in your application that you might need to update, such as an end-user
agreement or a user guide. Within your Android application, you can create
an Activity that contains a WebView, then use that to display your document that's hosted
online.
5. Another scenario in which WebView can help is if your application provides data to the user
that always requires an Internet connection to retrieve data, such as email. In this case,
you might find that it's easier to build a WebView in your Android application that shows a
web page with all the user data, rather than performing a network request, then parsing the
data and rendering it in an Android layout. Instead, you can design a web page that's
tailored for Android devices and then implement a WebView in your Android application that
loads the web page.
11
1. Before this will work, however, your application must have access to the Internet. To get
Internet access, request the INTERNET permission in your manifest file. For example:
That's all you need for a basic WebView that displays a web page.
12
3. Enabling JavaScript
a. For example:
b. WebSettings provides access to a variety of other settings that you might find
useful. For example, if you're developing a web application that's designed
specifically for the WebView in your Android application, then you can define a
custom user agent string with setUserAgentString(), then query the custom user
agent in your web page to verify that the client requesting your web page is actually
your Android application.
3. For example, you can include the following class in your Android application:
In this example, the WebAppInterface class allows the web page to create a Toast message,
using the showToast() method.
This creates an interface called Android for JavaScript running in the WebView. At this point, your
web application has access to the WebAppInterfaceclass. For example, here's some HTML and
JavaScript that creates a toast message using the new interface when the user clicks a button:
<script type="text/javascript">
function showAndroidToast(toast) {
Android.showToast(toast);
}
</script>
There's no need to initialize the Android interface from JavaScript. The WebView automatically
makes it available to your web page. So, at the click of the button,
the showAndroidToast() function uses the Android interface to call
the WebAppInterface.showToast() method.
https://developer.android.com/guide/webapps/index.html
14
4. Cordova : Généralités
16. Les genèses
Est un projet permis grâce à Adobe qui a fourni le code source à la fondation Apache.
Framework de développement d'application SPA pour plateformes mobiles
L'idée : compiler une coquille utilisant un module « webview » chargeant notre
application.
o C'est un peu comme si on encapsulait notre application dans un navigateur très
allégé.
PhoneGap existe toujours et peut permettre via une offre « cloud » de générer ses
applications pour Android mais aussi iOS, Windows Phone, BlackBerry…
Pour information, il permet également de compiler vers des plateformes desktop :
Windows 8 et Ubuntu.
o L'adresse : https://build.phonegap.com/
Adresse Cordova : https://cordova.apache.org/docs/en/latest/guide/overview/
17. L’architecture
5. Cordova: La pratique
This guide shows you how to create a JS/HTML Cordova application and deploy them
to various native mobile platforms using the cordovacommand-line interface (CLI). For
detailed reference on Cordova command-line, review the CLI reference
17
2. (Optional) Download and install a git client, if you don't already have one.
Following installation, you should be able to invoke git on your command line.
The CLI uses it to download assets when they are referenced using a url to a
git repo.
3. Install the cordova module using npm utility of Node.js. The cordova module
will automatically be downloaded by the npm utility.
on OS X and Linux:
On OS X and Linux, prefixing the npm command with sudo may be necessary
to install this development utility in otherwise restricted directories such
as /usr/local/share. If you are using the optional nvm/nave tool or have write
access to the install directory, you may be able to omit the sudo prefix. There
are more tips available on using npm without sudo, if you desire to do that.
on Windows:
The -g flag above tells npm to install cordova globally. Otherwise it will be installed in
the node_modules subdirectory of the current working directory.
Following installation, you should be able to run cordova on the command line with no
arguments and it should print help text.
18
Go to the directory where you maintain your source code, and create a cordova project:
This creates the required directory structure for your cordova app. By default,
the cordova create script generates a skeletal web-based application whose home
page is the project's www/index.html file.
See Also
7. Add Platforms
All subsequent commands need to be run within the project's directory, or any
subdirectories:
$ cd hello
Add the platforms that you want to target your app. We will add the 'ios' and 'android'
platform and ensure they get saved to config.xml:
$ cordova platform ls
See Also
To build and run apps, you need to install SDKs for each platform you wish to target.
Alternatively, if you are using browser for development you can use browser platform
which does not require any platform SDKs.
To check if you satisfy requirements for building the platform:
$ cordova requirements
Requirements check results for android:
Java JDK: installed .
Android SDK: installed
Android target: installed android-19,android-21,android-22,android-23
,Google Inc.:Google APIs:19,Google Inc.:Google APIs (x86 System Image
):19,Google Inc.:Google APIs:23
Gradle: installed
See Also
$ cordova build
You can optionally limit the scope of each build to specific platforms - 'ios' in this case:
See Also
SDKs for mobile platforms often come bundled with emulators that execute a device
image, so that you can launch the app from the home screen and see how it interacts
with many platform features. Run a command such as the following to rebuild the app
and view it within a specific platform's emulator:
Following up with the cordova emulate command refreshes the emulator image to
display the latest application, which is now available for launch from the home screen:
23
Alternately, you can plug the handset into your computer and test the app directly:
Before running this command, you need to set up the device for testing, following
procedures that vary for each platform.
See Also
You can modify the default generated app to take advantage of standard web
technologies, but for the app to access device-level features, you need to add plugins.
A plugin exposes a Javascript API for native SDK functionality. Plugins are typically
hosted on npm and you can search for them on the plugin search page. Some key
APIs are provided by the Apache Cordova open source project and these are referred
to as Core Plugin APIs. You can also use the CLI to launch the search page:
To add the camera plugin, we will specify the npm package name for the camera
plugin:
$ cordova plugin ls
cordova-plugin-camera 2.1.0 "Camera"
cordova-plugin-whitelist 1.2.1 "Whitelist"
See Also
While Cordova allows you to easily deploy an app for many different platforms,
sometimes you need to add customizations. In that case, you don't want to modify the
source files in various www directories within the top-level platforms directory,
because they're regularly replaced with the top-level www directory's cross-platform
source.
Instead, the top-level merges directory offers a place to specify assets to deploy on
specific platforms. Each platform-specific subdirectory withinmerges mirrors the
directory structure of the www source tree, allowing you to override or add files as
needed. For example, here is how you might uses merges to boost the default font size
for Android devices:
Edit the www/index.html file, adding a link to an additional CSS
file, overrides.css in this case:
body { font-size:14px; }
When you rebuild the project, the Android version features the custom font size, while
others remain unchanged.
You can also use merges to add files not present in the original www directory. For
example, an app can incorporate a back button graphic into the iOS interface, stored
in merges/ios/img/back_button.png, while the Android version can instead
capture backbutton events from the corresponding hardware button.
26
After installing the cordova utility, you can always update it to the latest version by
running the following command:
Run cordova -v to see which version is currently running. To find the latest released
cordova version, you can run:
Ce guide montre comment configurer votre environnement SDK pour déployer des applications
de Cordova pour les appareils Android et comment éventuellement utiliser Android-centré des
outils de ligne de commande dans votre flux de travail de développement. Vous devez installer le
SDK Android indépendamment si vous voulez utiliser ces outils axés sur la plate-forme de shell
ou la CLI de Cordova multi-plateforme pour le développement. Pour une comparaison entre les
voies de deux développement, consultez la vue d'ensemble. Pour plus d'informations sur la CLI,
consultez l'Interface de ligne de commande.
28
export PATH=${PATH}:/Development/android-sdk/platform-tools:/Development/andro
id-sdk/tools
Cette ligne dans ~/.bash_profile expose ces outils dans windows terminales
nouvellement ouverts. Si votre fenêtre de terminal est déjà ouvert dans OSX ou
d'éviter une déconnexion/connexion sur Linux, exécutez ceci pour les rendre
disponibles dans la fenêtre du terminal actuelle :
$ source ~/.bash_profile
6. ;C:\Development\android-sdk\platform-tools;C:\Development\android-sdk\tools
Android sdk ne fournit pas de n'importe quelle instance d'émulateur par défaut par
défaut. Vous pouvez créer un nouveau en exécutant android sur la ligne de
commande. La presse Outils → gérer AVDs (périphériques virtuels Android), puis
choisissez n'importe quel élément du Dispositif de définitions dans la boîte de
dialogue :
Appuyez sur Créer AVD, éventuellement modifier le nom, puis appuyez sur OK pour accepter les
modifications :
31
Pour ouvrir l'émulateur comme une demande distincte, l'AVD et cliquez sur Démarrer. Il lance
autant qu'il le ferait sur le dispositif, avec des contrôles supplémentaires disponibles pour les
boutons matériels :
Pour une expérience plus rapide, vous pouvez utiliser l' Accélération de la
Machine virtuelle pour améliorer la vitesse d'exécution. De nombreux processeurs
modernes fournissent des extensions pour exécuter des Machines virtuelles plus
efficacement. Avant d'utiliser ce type d'accélération, vous devez déterminer si CPU de
votre système actuel de développement, on supporte les technologies de virtualisation
suivants :
Une autre façon de savoir si votre processeur supporte la technologie de VT-x, c'est
en exécutant l' Utilitaire Intel Processor Identification Utility,
pour Windows, vous pouvez le télécharger depuis le Centre de téléchargementde Intel,
ou vous pouvez utiliser l' utilitaire booteable, qui estIndépendant de l'OS.
33
À ce stade, pour créer un nouveau projet, vous pouvez choisir entre l'outil CLI
multiplate-forme décrit dans l'Interface de ligne de commande, ou l'ensemble des outils
de coquille spécifiques à Android. Partir dans un répertoire de code source, voici
l'approche de la CLI :
$ /path/to/project/cordova/build --debug
C:\path\to\project\cordova\build.bat --debug
$ /path/to/project/cordova/build --release
C:\path\to\project\cordova\build.bat --release
$ cordova emulate android #to deploy the app on a default android emulat
or
$ cordova run android --device #to deploy the app on a connected device
$ /path/to/project/cordova/run --emulator
$ /path/to/project/cordova/run --device
Vous pouvez utiliser cordova run android --list pour voir toutes les cibles disponibles
et cordova run android --target=target_name pour exécuter l'application sur un
émulateur ou un périphérique spécifique (par exemple, cordova run android --
target="Nexus4_emulator").
Vous pouvez également utiliser cordova run --help pour voir construire
supplémentaire et exécuter les options.
Cela pousse l'app à l'écran d'accueil et il lance :
36
Lorsque vous run l'application, vous aussi build il. Vous pouvez ajouter supplémentaires --
debug, --releaseet --nobuild drapeaux pour contrôler comment il est construit, ou même si une
reconstruction est nécessaire :
$ /path/to/project/cordova/log
C:\path\to\project\cordova\log.bat
$ /path/to/project/cordova/clean
C:\path\to\project\cordova\clean.bat
Vous êtes tous ensemble maintenant et pouvez générer et exécuter l'application directement à
partir de Studio Android.
Consultez Vue d'ensemble Studio de Android et génération et l'exécution de Studio Android pour
plus de détails.
39
https://cordova.apache.org/docs/en/2.5.0/guide/getting-started/android/
https://cordova.apache.org/docs/fr/3.1.0/guide/platforms/android/
https://cordova.apache.org/docs/fr/6.x/
JBOSS
http://tools.jboss.org/documentation/howto/hmt_firstapp.html
http://www.jboss.org/ticket-monster/hybridui/
http://tools.jboss.org/blog/2014-11-24-three-ways-cordova-apps.html
https://aerogear.org/docs/guides/aerogear-cordova/CordovaAndroidDevJBDS/
40
6. Autres approches
21. Appcelerator Titanium,
https://docs.appcelerator.com/platform/latest/#!/api
22. Xamarin
https://developer.xamarin.com/api/
41
https://code.tutsplus.com/tutorials/an-introduction-to-cordova-example--cms-25328
http://imikado.developpez.com/tutoriels/androidCordova/ma-premier-application/
https://www.toptal.com/mobile/developing-mobile-applications-with-apache-cordova
https://gist.github.com/dhavaln/2238017
http://coenraets.org/blog/phonegap-tutorial/
8. Annexes
23. Les Fonctionnalités supportées par PhoneGap par OS
http://www.w3t.ca/nos-services/applications-web-mobiles/
42
http://www.nrblog.fr/pepito/2012/04/14/web-application-application-native-ou-application-
hybride-choix-cornelien/
43
Extrait Objet-Direct