Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Cours Android
Développement et API
1 / 125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Sommaire
1 Organisation du module
2 Généralité
3 Le Système
4
Fonctionnement des Applications
5 Une Approche Système
2 / 125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Développement Mobile
Développement Android
Développement Android
Développement web sur mobile
Développement Android :
Architecture
Bibliothèques Natives
Runtime
HAL
Développement web sur mobile : Alexandre Lissy (2h CM, 10h
TP)
HTML5, CSS, JavaScript
PhoneGap
Titanium
4 / 125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Développement Mobile
Développement Android
Généralité Android
Organisation du système
Android SDK
Application
Architecture Android
Architecture
Bibliothèques Natives
Runtime
HAL
5 / 125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Plan des TPs
Projet : Google Maps API (Géo-localisation)
Projets : Géolocalisation des Bus
7 / 125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Bibliographie
Cours de Romain Raveaux Mars 06-03, 2012 Laboratoire LI –
Polytech’Tours romain.raveaux at univ-tours.fr
http://developer.android.com/index.html
http://www.tutomobile.fr/category/tutorial-android/
http://android.developpez.com/cours/
Linux Mag
Programming Android de Zigurd Mednieks, Laird Dornin et G.
Blake Meike
10 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Présentation Générale
11 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Qu’est-ce que c’est ?
Souvent présenté comme l’alternative de Google à l’iPhone
Système d’exploitation pour terminaux mobiles
Basé sur Linux
Open Source (licence Apache)
12 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Fonctionnalités 1/2
Framework applicatif avec réutilisation et remplacement
possible des composants
DVM : Dalvik Virtual Machine (machine virtuelle optimisée
pour les périphériques mobiles)
Navigateur intégré basé sur le moteur WebKit (OpenSource)
Librairie 2D dédiée
Gestion de la 3D basée sur une implémentation d’OpenGL ES
1.0 (avec support de l’accelération matérielle)
Base de données SQLite
Gestion des écrans tactiles et du Multitouch
SDK 5.0 ART à la place de DVM
13 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Fonctionnalités 2/2
Multimédia : support de la plupart des formats classiques
d’images, de videos et audios (MPEG4, H.264, MP3, AAC,
AMR, JPG, PNG, GIF)
Téléphonie GSM (selon hardware)
Bluetooth, EDGE, 3G et WiFi (selon hardware)
Caméra, GPS, compas et acceléromètre (selon hardware)
Environnement de développement riche incluant :
Un émulateur (avec une interface de controle)
Des outils de deboggage
Outils de profiling mémoire et performance
Un plugin pour l’IDE Eclipse
-
-
-
-
14 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Historique
Développé par la startup Android Inc.
Juillet 2005 : Rachat par Google
Novembre 2007 : Open Handset Alliance
- Texas Instruments, Broadcom Corporation, Google, HTC,
Intel, LG, Marvell Technology Group, Motorola, Nvidia,
Qualcomm, Samsung Electronics, Sprint Nextel, T-Mobile
Décembre 2008 : ARM Holdings, Atheros Communications,
Asustek Computer Inc, Garmin Ltd, Softbank, Sony Ericsson,
Toshiba Corp, Vodafone
-
15 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Terminaux Visés
Téléphones portables (HTC, Samsung, Motorola...)
Netbook/Smartbook (HP Airlife 100, Acer Aspire D250...)
Tablette Multimedia (Archos, Samsung Galaxy Tab, ...)
Automobile (Continental AutoLinq : Tesla, Ford...)
Mais aussi : GPS, Réfrigerateur, Machine à laver...
16 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Et ça ressemble à quoi ?
17 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Mobiles Disponibles
En 2008 : HTC Dream / G1
18 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Mobiles Disponibles
En 2009 : Une quizaine (HTC, LG, Samsung, Motorola...)
19 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Mobiles Disponibles
En 2010 : De très nombreux mobiles
20 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Concurrents
Apple iPhone OS : un des leaders en téléphonie, fermé...
Windows Phone 7 : En progression avec la chute de windows
mobile 6, fermé...
Palm : précurseur, en perte de vitesse, PalmPré ?
Blackberry : plutot dédié entreprise mais se démocratise
Symbian : passage en open source octobre 2009
Mais la plupart de ses concurrents n’ont pas la flexibilité d’Android
qui ne se destine pas qu’aux téléphones mobiles !
21 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Parts de Marché
22 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Les versions...
Versions d’Android :
1.0 : Apple Pie (sept 2008)
1.1 : Banana Split (fev 2009)
1.5 : Cupcake (avril 2009)
Publicité
1.6 : Donut (septembre 2009)
2.0/2.1 : Eclair (Octobre 2009)
2.2 : FroYo (Mai 2010)
2.3 : Gingerbread (Novembre 2010)
3.0 : Honeycomb (Février 2011)
4.0 : Ice Cream Sandwich (ICS) (Décembre 2011)
4.1 : Jelly Bean (Juillet 2012)
4.4 : KitKat (sept 2013)
5.0 : Lollipop (juin 2014)...9.0 (2019)
Remarques :
E´volution très rapide !
Problématique de déploiement
23 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Cupcake 1.5
30 Avril 2009
Linux Kernel 2.6.27
Possibilité d’enregistrer et de
regarder des vidéos
Upload de vidéos vers Youtube et
d’images vers picasa directement
depuis le téléphone
Un nouveau clavier avec saisie
prédictive
Support du Bluetooth A2DP et
AVRCP
Possibilité de se connecter
à un kit
automatiquement
bluetooth
Ajouts de widget
Ajout des dossiers sur le Home
Transition d’écrans animées
24 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Donut 1.6
15 Septembre 2009
Linux Kernel 2.6.29
Nouvelle version du market
Refonte de la camera et de la
galerie (suppression multiple...)
Mise à jour de la recherche
vocale. Réponses plus rapides et
meilleure intégration (appel de
contacts..)
Amélioration des recherches pour
intégrer les bookmarks, l’historique,
les contacts et le web depuis l’écran
de démarrage
Support de nouveaux protocoles
de communication
Support des écrans en WVGA
Amélioration des performances
Framework ”Gesture” disponible
Navigation Google Gratuite
25 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Eclair 2.1
26 Octobre 2009
Linux Kernel 2.6.29
Optimisation des performance
Support des écrans de taille et de
résolution di↵érentes
Interface revue
Nouvelle interface pour le
navigateur et support d’ HTML5
Nouvelle liste des contacts
Intégration de Google Maps 3.1.2
Support de Microsoft Exchange
Support du flash intégré pour
l’appareil photo
Zoom digital
Amélioration du Multitouch
Amélioration du clavier virtuel
Bluetooth 2.1
Live Wallpapers
26 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Froyo 2.2
20 Mai 2010
Linux Kernel 2.6.32
Amélioration générale de l’OS
(vitesse, memoire...)
Mise en place de JIT
Integration du moteur JavaScript
V8 de chrome dans le navigateur
Amelioration du support de
Microsoft Exchange
Mise à jour du ”Launcher”
Support du Hotspot Wi-Fi
Mise a jour du Market et mise a
jour automatiques
Passage rapide d’un clavier d’une
langue à une autre
27 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Gingerbread 2.3
Novembre 2010
Linux Kernel 2.6.xxx
Support des technologies NFC
(Near Field Communication)
Client SIP améioré
28 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
HoneyComb 3.0
Février 2011
Orienté Tablette
Prise en charge du multi-coeurs
29 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Ice Cream Sandwich
Déblocage par reconnaissance de
visage.
Amélioration de la navigation
internet avec le navigateur
Chrome.
Non support du flash.
Gestion des form factory sans
touches tactiles.
30 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Répartition des Versions
Au 1er Juin 2014
31 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Evolution des écrans
Au 1er Novembre 2010
32 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Répartition des écrans
Au 1er Novembre 2010
33 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
La fragmentation
Complainte : La plate-forme n’oblige-t-elle pas à :
Faire la part belle au plus petit dénominateur commun. A
utiliser d’anciens SDK ou des API archa¨ıques pour fonctionner
sur le plus grand nombre d’appareils.
S’arracher les cheveux pour le design et les tests avec une
centaine de tailles d’écrans, de versions de système, de
caractéristiques matérielles ou de modes de saisie.
Une audience réduite pour son application, parce que seul un
faible pourcentage d’utilisateurs Android aura acces a certains
applications, sur certaines appareils.
Les choses ont changé
La fragmentation, elle, n’est plus qu’un mythe.
Depuis 2012, Google a fait d’énormes progrès. Certes, un large
pourcentage d’utilisateurs ne bénéficie toujours de la dernière
édition du système, la version 4.4 Kitkat.
Alors que plus de 90% des utilisateurs iOS profitent, au
quotidien, de la derniere version du systeme (iOS 7).
34 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
La fragmentation
Les choses ont changé
La part d’installation des services Google Play, bien plus
pertinente
Car ces services téléchargent en tâche de fond les composants
nécessaires pour faire tourner les applications Android.
Or 93 % des utilisateurs Android utilisent la dernière version
des Services Google Play.
Google bascule doucement des composants clés d’Android, des
API et des éléments applicatifs du cœur du système vers les
services Google Play.
La version 5.0 de ces services est actuellement en cours de
déploiement sur tous les appareils Android, de la version 2.3
Gingerbread à la version 4.4 Kitkat.
35 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Android Market (Play Store)
Système standard de téléchargement d’applications
Pas de vérifications des applications
Navigation laborieuse :
Par catégorie
Recherche par mots clés
Par gratuit / payant
Classement enfant, adolescent, adulte...
Nécessite un terminal certifié (camera, 3G, compas...)
Gestion des autorisations avant l’installation
Possibilité de rendre payant les app.
Publicité
Des centaines de milliers d’app.
36 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Android Market
25$ pour s’inscrire en tant que developpeur
70% du prix revient au developpeur, 30% a Google
Revenus via Google CheckOut (Google Wallet)
Achat & vente possible selon les pays
57% d’applications gratuites
App Store : 28%
Idem Blackberry App World, Nokia Ovi Store...
37 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Markets Alternatifs
AppsLib (Archos) : http://appslib.com
AndroLib : http://www.androlib.com
Market Samsung
...
Tout a fait autorisé par Google
Libre de fonctionnement
Accessible aux terminaux non certifiés
38 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Sans Market
Via les outils du SDK
Via des applications disponibles sur le market et la carte SD
39 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Environnement de développement
Outils :
IDE: Android Studio / Eclipse
SDK Android
ADT : Android Development Tools (plugin eclipse)
AVD : Android Virtual Device
ADB : Android Debug Bridge
40 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Android n’est pas Linux
Android : un système basé sur Linux ...
mais avec tellement de modifications - - > pas considérer
comme un système Linux
Android n’est pas un OS GNU/Linux
Rumeur : Linux 3.3 et Android : début de fusion du noyau
41 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Linux sur périphériques mobiles ?
GNU/Linux ne convient pas aux appareils mobiles
Google a donc modifié le noyau Linux
Android est open source.
42 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Android taillé pour l’embarqué
Périphériques avec peu de ressources
Périphériques avec des ressources di↵érentes
Périphériques avec une utilisation bornée
Smart Phone, lecteur de salon, auto-radio....
AOSP (Android Open Source Project)
Licence Apache
43 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Android un système ouvert ?
+++ Des applications tierces peuvent comuniquer entre elles
— Google play services en dehors du projet open-source
AOSP.
— Android Open Source Project (AOSP) est il socle su sant
pour utiliser un appareil sous Android sans les services Google.
Note : Evidemment, le contenu de ces diapos représente une
prise de parole individuelle.
44 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Architecture Générale
45 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Architecture Générale
5 couches : noyau, bibliothèques natives, runtime, framework,
application
46 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Noyau
Noyau Linux 2.6 (mais modifié)
Choisi pour sa stabilité, sa maturité et l’ouverture du code
Principal Changement : Suppression des IPC SysV remplacer
par Binder
Binder proche de CORBA.
E´conomique en ressource dédié aux architectures qui reposent
pas activement sur la gestion de processus.
Gestion de la mémoire di↵érente. SHM POSIX mais simplifié.
Partage de mémoire entre processus via Binder
Systeme embarqué oblige l’acces aux journaux ne peut pas se
faire via /var/log/*
Intégration d’un logger
47 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Noyau
En standard par de fonction pour terminer l’application
Viking Killer (Out Of Memory Management)
Pour tâche de tuer processus quand la mémoire vient à
manquer
48 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Noyau Linux
49 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Noyau Linux
Android repose sur un noyau Linux version 2.6
Gestion de la securité
Gestion de la mémoire
Gestion des processus
Gestion réseau
Drivers
...
Ce noyaux agit comme une couche d’abstraction entre le
matériel et le restes des couches applicatives.
50 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Compatibilité Linux
Noyau dérivé de Linux mais a été modifié par Google :
Pas de système X-Window nativement
Ne supporte pas toutes les libraires GNU standards
Di culté de porter toutes les applications (ou librairies)
compatibles linux.
Mais le support de X-Window reste néanmoins possible
Le Code de google n’est pas reversé dans le noyau linux car
Android forme un nouvel arbre de développement.
51 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Bibliothèques Natives
Elles fournissent un acces direct aux ressources du systeme
Une couche d’abstraction au framework Java Android
52 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Librairies
53 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Librairies
Android inclus un ensemble de librairies C/C++
Utilisées par les applications Android
Accessibles au développeur via le SDK
Quelques unes de ces librairies
- Librairie Système C : une implémentation dérivé de
-
-
l’implémentation BSC des librairies standard C (libc)
LibWebCore : Un moteur de navigateur internet moderne
utilisé autant pour navigateur android que pour les vues web
intégrables
SQLite : un système de gestion de base de données relationnel
léger et puissant disponible pour toutes les applications.
54 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Bibliothèques Natives : Bionic Libc
Elles ne reposent pas sur la classique GNU Libc.
Sa propre bibliothèque C appelée Bionic Libc.
Pas l’ensemble des fonctions POSIX.
Bionic Libc ne prend en charge que les architectures ARM et
x86.
Publicité
Bon support ARM au revoir Power PC ou MIPS
Les threads sont incompatibles avec POSIX
55 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Bibliothèques Natives (les connues)
SQLite
WebKit
FreeType
56 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Bibliothèques Natives : Google made
Le media framework : codec, compression, lecture, écriture.
Surface Manager : Dessiner à l’écran s’interface avec le noyau
par framebu↵er.
57 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Librairies
...
-
- Librairies MultiMedia : basées sur ”PacketVideo’s
OpenCORE”. Intégre le support de la lecture et de
l’enregistrement de nombreux formats audio, vidéo et image
(MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG...)
Surface Manager : gere l’acces et l’a chage des di↵érentes
vues (2D ou 3D) composant les applications
SGL : Le moteur de rendu pour l’imagerie 2D
Librairie 3D : Une implémentation basée sur l’API OpenGL ES
1.0. Intégrant à la fois l’accélération matérielle (si disponible)
et l’accélération logicielle.
FreeType : Librairie de rendu de police bitmap et vectorielles.
-
-
-
58 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Android Runtime
59 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Android Runtime
-
-
-
DVM : Dalvik Virtual Machine
Ecrite par Dan Bornstein
Dalvik : village de pêcheurs en islande
Une sorte de JVM optimisée pour les systèmes limités en
mémoire et en puissance.
Exécute les applications ”.dex” compilés depuis le code
automatiquement par le SDK avec l’outil ”dx”
Utilise du ByteCode spécifique et non du ByteCode Java
Optimisée également pour être ”multi-instance” sur un seul
terminal.
-
-
-
Aout 2010 : Oracle (Java) porte plainte envers Google pour
leur implémentation de Dalvik qui serait basé sur le code
source de java... Procès gagné par Google en 2012, mais
perdu en 2014 (1 miliard $ à payer pour Oracle) .
60 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Android Runtime : Compilation
Deux passages :
.JAVA vers .CLASS
Concaténation des .CLASS en .DEX
Une application c’est :
Le bytecode DEX
des ressources (images, sons...)
Le tout regroupé dans un package .APK
61 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Android Runtime
Android inclus un ensemble de librairies de base proposant
ainsi la quasi totalité des fonctionnalités disponibles dans le
langage de programmation Java.
Chaque application sous Android utilise sa propre instance
d’une DVM.
-
-
-
-
Pas de problème d’interaction entres les applications
Espace protégé
Pas de risque de plantage général
D’ou` la nécessité d’une VM optimisée !
62 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Android Runtime
Au démarrage d’Android:
Une machine virtuelle est lancée afin de pré-charger presque
2000 classes.
Zygote
Les instances de Dalvik initiées par le lancement d’applications
sont des forks de Zygote.
Un cache est mis en place dès le démarrage pour accélérer le
chargement du bytecode DEX.
63 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Android Runtime
Une machine virtuelle JAVA reposant sur un système
GNU/Linux ne serait pas utilisable.
Un mécanisme de compilation à la volée (JIT) permet
d’accélérer l’exécution.
Les Core Libraries intégrent l’API standard JAVA J2SE 1.5.
Des fonctionnalités sont enlevées : toolkit SWING, fonctions
d’impression.
64 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Android Runtime
Code Natif :
Codage via le Android NDK
JNI permet le pont entre le natif et Dalvik
Peu utilisé sauf pour les jeux (habitude de programmeurs)
Permet des gains de performance parfois. Cela dépend de
l’application.
65 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
ART au lieu Dalvik VM à partir de SDK 5.0
Android Runtime
La machine virtuelle Dalvik a été officiellement remplacée par ART
(Android Runtime) qui est maintenant activé par défaut.
ART est un moteur d'exécution multi-plate-forme qui prend en charge les
architectures x86, ARM, MIPS et les environnements 32 bits et 64 bits.
Contrairement à Dalvik, qui utilise la compilation juste à temps (JIT), ART
compile les applications lors de l'installation (compilation anticipée) ou AOT
(Ahead of Time), elles sont ensuite exécutées exclusivement à partir de la
version compilée.
Cette technique élimine la charge de traitement associée à la compilation
JIT, améliorant les performances du système ainsi que la consommation
d'énergie
65 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Framework Applicatif
Framework écrit en Java.
Fournit tout ce que les applications ont besoin.
API du framework décrite dans la documentation du SDK
E´léments du framework :
Activity Manager : cycle de vie des applications (backstack).
Assure le multi tâche
Package Manager : Manipulation du format .apk
Window Manager : utilise Surface Manager.
Ressource Manager : Tout ce qui n’est pas du code.
Content Manager : Partage des données entre processus
View System : équivalent d’un toolkit GTK+. Gère le rendu
HTML
Telephony Service : fournit l’accès aux services GSM, 3G,
GPRS
Location Service : fournit l’acces a la gestion du GPS.
Bluetooth Service
Wifi Service
Sensor Service
66 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Framework Applicatif
Framework écrit en Java.
67 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Framework Applicatif
68 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Framework Applicatif
Plateforme de developpement Ouverte
-
-
-
-
-
-
Permet des application riches et variées
Acces au matériel
Acces aux informations de localisation
Lancement de services de fond
Publicité
Mise en place d’alarmes, de notifications
...
69 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Framework Applicatif
Plateforme de developpement Ouverte
Architecture concue pour simplifier la réutilisation des
composants
Publication des capacités des applications
Les autres applications peuvent utiliser ces capacités
Chargé facilement les apps.
70 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Framework Applicatif
Une application est composée d’un ensemble de services et de
systèmes incluant :
Un ensemble de vues ”Views” utilisées pour construire
l’application (listes, grilles, zone de saisies, boutons ou encore
navigateur web intégrable)
”Content Provider” permettant aux applications d’accéder
aux données d’autres applications (Contacts...) ou de partager
leur propres données.
”Resource Manager” permettant d’accéder a des ressources tel
que des chaines de caractères, des images ou des ”layout” (le
tout paramétrable selon de multiples critères : taille de l’écran,
internationalisation...)
71 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Framework Applicatif
Mais aussi :
”Notification Manager” permettant à chaque application
d’utiliser la barre de statut générale pour y intégrer ses
propres informations.
”Activity Manager” : composant qui gère le cycle de vie d’une
application et fournit les outils de navigation applicative.
72 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Applications
73 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Applications
2 parties :
Les activités : des fenêtres interactives
Les services : tâches de fond.
Les applications tournent dans leurs SandBoxes
Communications entre applications : Les ”intent”
Intent = intention : formule une demande
Plusieurs composants peuvent répondre à un ”intent” .
74 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Applications
Dernière couche sur Android
Plusieurs sont intégrées dans le système :
Ecran ”Home”
Gestion des Emails
Gestion des SMS/MMS
Gestion de la téléphonie
Google Maps...
Application supplémentaires installables
Toutes les applications sont écrites via le même SDK !
75 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Généralités
Les applications sont écrites en Java
Le code compilé ”dex” ainsi que les ressources (images,
layout...) sont regroupés dans une archive au format ”apk”
par les outils du SDK
Cette archive ”apk” est un tout permettant la distribution et
l’installation de l’application sur n’importe quelle plateforme
android.
76 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Indépendance
Chaque application Android est isolé des autres à plusieurs
niveaux :
-
- Chaque application tourne sur son propre process Linux. Ce
processus est lancé par Android dès qu’une partie du code
nécessite une éxécution et inversement tue les processus dont il
n’a plus d’utilité.
De plus chaque process utilise sa propre machine virtuelle
Dalvik. Ainsi chaque application possède son propre
environnement.
Chaque application est associé à un unique Linux User Id.
Ainsi les fichiers d’une application ne sont pas visibles par les
autres applications. (mais il existe des moyens de partager ces
ressources, par exemple via les Content Provider)
Il est possible de forcer deux application de partager le même
user ID (et donc de partager des fichiers nativement). Il est
également possible donc d’utiliser la même VM et le même
processus Linux.
-
-
77 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Indépendance
Un des aspect les plus important d’Android est la
réutilisabilité
- Chaque application peut utiliser des ”morceaux d’autres
applications” (si elle le permettent)
- Par exemple si votre application permet de retoucher des photos
et que vous désirez publier cette photo vous pouvez utiliser
toutes les applications déjà présentes pour réaliser cette tâche
(facebook, picasa, mail ...). Et sans utiliser le code de cette
application tierce juste en appeler la partie intéressante.
Ainsi le système doit être capable :
- De lancer n’importe quelle partie exposée d’une application
sans en lancer la totalité
- Donc les application Andoid n’ont pas de point d’entrée global
(méthode main()). Mais sont composés d’éléments
indépendants ou chacun peut être lancé individuellement.
78 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
E´léments Fondamentaux
Activity
Service
BroadcastReceiver
ContentProvider
Intent
79 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Les Activity
Une activité (”Activity”) = une IHM pour une action
utilisateur précise :
-
-
-
Liste d’éléments parmis lesquels l’utilisateur peut choisir
A chage d’une image avec un titre
A chage d’un calendrier pour choisir une date
Exemple d’une application de SMS :
Une activité pour choisir un contact
Une autre pour écrire le message
Une autre pour a cher un historique d’échanges.
-
-
-
Chaque activité est indépendante des autres
Une activité doit hériter de la classe : android.app.Activity
80 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Les Activity
Une application est donc un ensemble d’activités
On doit définir quelle est la premiere activité a exécuter lors
du lancement de l’application
Pour naviguer dans l’application chaque activité doit
elle-même lancer l’activité suivante.
81 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Les Activity
Chaque activité est assignée à une fenêtre
Plein écran
Fenêtre flottante
Une activité peux aussi posséder des sous fenêtres
Pop-up ...
-
-
-
82 /125
Organisation du module
Généralité
Le Système
Fonctionnement des Applications
Une Approche Système
Les Activity
Le rendu d’une activité est définit par :
Une ou un ensemble de vues
Les vues héritent de la classe android.view.View
Chaque vue controle une zone rectangulaire de l’activité
L’organisation est définit par un arbre de ”Layout” ou chaque
feuille est une vue.
Un grand nombre de vues standards sont proposées
(combobox, zone de texte, bouton...)
Possibilité de définir des vues personnalisées
83 /125
Organisation du module
Généralité
Le Système
Fonctionnement d...