androidcours
Document Sample


Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Cours Android
e
D´veloppement et API
Romain Raveaux1
1 Laboratoire L3I – IUT de La Rochelle
romain.raveaux01 at univ-lr.fr
Octobre 29-01, 2011
1 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Sommaire
1 Organisation du module
2 Generalite
3 e
Le Syst`me
4 Fonctionnement des Applications
2 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Romain Raveaux
Doctorat en informatique
e ee
2 Masters: R´seaux et T´l´communications et Maths
e
appliqu´es
Recherche (Laboratoire L3i)
e e
S´curit´ documentaire
e
Analyse de graphes (R´seaux informatiques ou sociaux)
o
Enseignements (Master Icˆne+IUT info)
e
Web S´mantique
e
R´seau
3 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Romain Raveaux
Doctorat en informatique
e ee
2 Masters: R´seaux et T´l´communications et Maths
e
appliqu´es
Recherche (Laboratoire L3i)
e e
S´curit´ documentaire
e
Analyse de graphes (R´seaux informatiques ou sociaux)
o
Enseignements (Master Icˆne+IUT info)
e
Web S´mantique
e
R´seau
3 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Romain Raveaux
Doctorat en informatique
e ee
2 Masters: R´seaux et T´l´communications et Maths
e
appliqu´es
Recherche (Laboratoire L3i)
e e
S´curit´ documentaire
e
Analyse de graphes (R´seaux informatiques ou sociaux)
o
Enseignements (Master Icˆne+IUT info)
e
Web S´mantique
e
R´seau
3 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Romain Raveaux
Doctorat en informatique
e ee
2 Masters: R´seaux et T´l´communications et Maths
e
appliqu´es
Recherche (Laboratoire L3i)
e e
S´curit´ documentaire
e
Analyse de graphes (R´seaux informatiques ou sociaux)
o
Enseignements (Master Icˆne+IUT info)
e
Web S´mantique
e
R´seau
3 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Romain Raveaux
Doctorat en informatique
e ee
2 Masters: R´seaux et T´l´communications et Maths
e
appliqu´es
Recherche (Laboratoire L3i)
e e
S´curit´ documentaire
e
Analyse de graphes (R´seaux informatiques ou sociaux)
o
Enseignements (Master Icˆne+IUT info)
e
Web S´mantique
e
R´seau
3 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Romain Raveaux
Doctorat en informatique
e ee
2 Masters: R´seaux et T´l´communications et Maths
e
appliqu´es
Recherche (Laboratoire L3i)
e e
S´curit´ documentaire
e
Analyse de graphes (R´seaux informatiques ou sociaux)
o
Enseignements (Master Icˆne+IUT info)
e
Web S´mantique
e
R´seau
3 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Romain Raveaux
Doctorat en informatique
e ee
2 Masters: R´seaux et T´l´communications et Maths
e
appliqu´es
Recherche (Laboratoire L3i)
e e
S´curit´ documentaire
e
Analyse de graphes (R´seaux informatiques ou sociaux)
o
Enseignements (Master Icˆne+IUT info)
e
Web S´mantique
e
R´seau
3 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Romain Raveaux
Doctorat en informatique
e ee
2 Masters: R´seaux et T´l´communications et Maths
e
appliqu´es
Recherche (Laboratoire L3i)
e e
S´curit´ documentaire
e
Analyse de graphes (R´seaux informatiques ou sociaux)
o
Enseignements (Master Icˆne+IUT info)
e
Web S´mantique
e
R´seau
3 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Module Android
Module PM4 : 2 semaines
e e e
G´n´ralit´ Android
e
Organisation du syst`me
Android SDK
Application
4 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Module Android
Module PM4 : 2 semaines
e e e
G´n´ralit´ Android
e
Organisation du syst`me
Android SDK
Application
4 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Module Android
Module PM4 : 2 semaines
e e e
G´n´ralit´ Android
e
Organisation du syst`me
Android SDK
Application
4 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Module Android
Module PM4 : 2 semaines
e e e
G´n´ralit´ Android
e
Organisation du syst`me
Android SDK
Application
4 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Plan des TPs
e
Getting started (D´bugger, helloworld)
e e
Projets : G´olocalisation des Stations Y´lo
5 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Plan des TPs
e
Getting started (D´bugger, helloworld)
e e
Projets : G´olocalisation des Stations Y´lo
5 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
e
Les r`gles
Ne pas perturber le cours:
Silence
a
Rendre les comptes rendus de TP ` temps.
6 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
e
Les r`gles
Ne pas perturber le cours:
Silence
a
Rendre les comptes rendus de TP ` temps.
6 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Bibliographie
http://developer.android.com/index.html
http://www.tutomobile.fr/category/tutorial-android/
http://android.developpez.com/cours/
http://www.tutomobile.fr/geolocalisation-grace-au-gps-ou-au-
reseau-mobile-tutoriel-android-n%C2%B015/13/08/2010/
http://www.androidcompetencycenter.com/2009/06/start-
service-at-boot/
Linux Mag
7 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Bibliographie
http://developer.android.com/index.html
http://www.tutomobile.fr/category/tutorial-android/
http://android.developpez.com/cours/
http://www.tutomobile.fr/geolocalisation-grace-au-gps-ou-au-
reseau-mobile-tutoriel-android-n%C2%B015/13/08/2010/
http://www.androidcompetencycenter.com/2009/06/start-
service-at-boot/
Linux Mag
7 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Bibliographie
http://developer.android.com/index.html
http://www.tutomobile.fr/category/tutorial-android/
http://android.developpez.com/cours/
http://www.tutomobile.fr/geolocalisation-grace-au-gps-ou-au-
reseau-mobile-tutoriel-android-n%C2%B015/13/08/2010/
http://www.androidcompetencycenter.com/2009/06/start-
service-at-boot/
Linux Mag
7 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Bibliographie
http://developer.android.com/index.html
http://www.tutomobile.fr/category/tutorial-android/
http://android.developpez.com/cours/
http://www.tutomobile.fr/geolocalisation-grace-au-gps-ou-au-
reseau-mobile-tutoriel-android-n%C2%B015/13/08/2010/
http://www.androidcompetencycenter.com/2009/06/start-
service-at-boot/
Linux Mag
7 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Bibliographie
http://developer.android.com/index.html
http://www.tutomobile.fr/category/tutorial-android/
http://android.developpez.com/cours/
http://www.tutomobile.fr/geolocalisation-grace-au-gps-ou-au-
reseau-mobile-tutoriel-android-n%C2%B015/13/08/2010/
http://www.androidcompetencycenter.com/2009/06/start-
service-at-boot/
Linux Mag
7 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Bibliographie
http://developer.android.com/index.html
http://www.tutomobile.fr/category/tutorial-android/
http://android.developpez.com/cours/
http://www.tutomobile.fr/geolocalisation-grace-au-gps-ou-au-
reseau-mobile-tutoriel-android-n%C2%B015/13/08/2010/
http://www.androidcompetencycenter.com/2009/06/start-
service-at-boot/
Linux Mag
7 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Bibliographie
e
Ce cours/TP utilise tr`s largement l’article de Yann
e
D’ISANTO publi´ sur Developpez.com ainsi que de la
e
pr´sentation de Lenn Angel.
8 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
e e e
Pr´sentation G´n´rale
9 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Qu’est-ce que c’est ?
e e a
Souvent pr´sent´ comme l’aternative de Google ` l’iPhone
e
Syst`me d’exploitation pour terminaux mobiles
e
Bas´ sur Linux
Open Source (licence Apache)
10 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
e
Fonctionnalit´s 1/2
e
Framework applicatif avec r´utilisation et remplacement
possible des composants
e
DVM : Dalvik Virtual Machine (machine virtuelle optimis´e
e e
pour les p´riph´riques mobiles)
e e e
Navigateur int´gr´ bas´ sur le moteur WebKit (OpenSource)
e e
Librairie 2D d´di´e
e e
Gestion de la 3D bas´e sur une impl´mentation d’OpenGL ES
e e
1.0 (avec support de l’accel´ration mat´rielle)
e
Base de donn´es SQLite
e
Gestion des ´crans tactiles et du Multitouch
11 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
e
Fonctionnalit´s 2/2
e
Multim´dia : support de la plupart des formats classiques
d’images, de videos et audios (MPEG4, H.264, MP3, AAC,
AMR, JPG, PNG, GIF)
ee
T´l´phonie GSM (selon hardware)
Bluetooth, EDGE, 3G et WiFi (selon hardware)
e e e
Cam´ra, GPS, compas et accel´rom`tre (selon hardware)
e
Environnement de d´veloppement riche incluant :
- Un emulateur (avec une interface de controle)
- Des outils de deboggage
- Outils de profiling memoire et performance
- Un plugin pour l’IDE Eclipse
12 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Historique
e e
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
e
- D´cembre 2008 : ARM Holdings, Atheros Communications,
Asustek Computer Inc, Garmin Ltd, Softbank, Sony Ericsson,
Toshiba Corp, Vodafone
13 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
e
Terminaux Vis´s
ee
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...)
e a
Mais aussi : GPS, R´frigerateur, Machine ` laver...
14 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
a
Et ca ressemble ` quoi ?
15 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Mobiles Disponibles
En 2008 : HTC Dream / G1
16 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Mobiles Disponibles
En 2009 : Une quizaine (HTC, LG, Samsung, Motorola...)
17 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Mobiles Disponibles
e
En 2010 : De tr`s nombreux mobiles
18 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Concurrents
ee e
Apple iPhone OS : leader en t´l´phonie, ferm´...
Windows Mobile : vieillissant, va t’il revenir avec v7 ?
e e
Palm : pr´curseur, en perte de vitesse, PalmPr´ ?
e e e
Blackberry : plutot d´di´ entreprise mais se d´mocratise
Symbian : passage en open source octobre 2009
e
Mais la plupart de ces concurrents n’ont pas la flexibilit´ d’Android
ee
qui ne se destine pas qu’aux t´l´phones mobiles !
19 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
e
Parts de March´
20 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Les versions...
Versions d’Android :
1.5 : Cupcake (avril 2009)
1.6 : Donut (septembre 2009)
2.0/2.1 : Eclair (Octobre 2009)
2.2 : FroYo (Mai 2010)
2.3 : Gingerbread (Novembre 2010)
e
3.0 : Honeycomb (F´vrier 2011)
Remarques :
e
Evolution tr`s rapide !
e e
Probl´matique de d´ploiement
21 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Cupcake 1.5
Support du Bluetooth A2DP et
AVRCP
e
Possibilit´ de se connecter
a
automatiquement ` un kit
30 Avril 2009 bluetooth
Linux Kernel 2.6.27 Ajouts de widget
e
Possibilit´ d’enregistrer et de Ajout des dossiers sur le Home
e
regarder des vid´os
e e
Transition d’´crans anim´es
e
Upload de vid´os vers Youtube et
d’images vers picasa directement
ee
depuis le t´l´phone
Un nouveau clavier avec saisie
e
pr´dictive
22 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Donut 1.6
e
Am´lioration des recherches pour
e
int´grer les bookmarks,
l’historique, les contacts et le web
e e
depuis l’´cran de d´marrage
Support de nouveaux protocoles
15 Septembre 2009
de communication
Linux Kernel 2.6.29
e
Support des ´crans en WVGA
Nouvelle version du market
e
Am´lioration des performances
Refonte de la camera et de la
Framework ”Gesture” disponible
galerie (suppression multiple...)
Navigation Google Gratuite
a
Mise ` jour de la recherche
e
vocale. R´ponses plus rapides et
e
meilleure int´gration (appel de
contacts..)
23 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Eclair 2.1
Support de Microsoft Exchange
e e
Support du flash int´gr´ pour
l’appareil photo
26 Octobre 2009 Zoom digital
Linux Kernel 2.6.29 e
Am´lioration du Multitouch
Optimisation des performance e
Am´lioration du clavier virtuel
Support des ecrans de taille et de Bluetooth 2.1
e e
r´solution diff´rentes
Live Wallpapers
Interface revue
Nouvelle interface pour le
navigateur et support d’ HTML5
Nouvelle liste des contacts
e
Int´gration de Google Maps 3.1.2
24 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Froyo 2.2
a
Mise ` jour du ”Launcher”
Support du Hotspot Wi-Fi
20 Mai 2010 a a
Mise ` jour du Market et mise `
Linux Kernel 2.6.32 jour automatiques
Am´lioration g´n´rale de l’OS
e e e Passage rapide d’un clavier d’une
(vitesse, memoire...) a
langue ` une autre
Mise en place de JIT
Integration du moteur JavaScript
V8 de chrome dans le navigateur
Amelioration du support de
Microsoft Exchange
25 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Gingerbread 2.3
Novembre 2010
Linux Kernel 2.6.xxx
Support des technologies NFC
(Near Field Communication)
e e
Client SIP am´ior´
26 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
HoneyComb 3.0
e
F´vrier 2011
e
Orient´ Tablette
Prise en charge du multi-coeurs
27 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Evolution des Versions
Au 1er Novembre 2010
28 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
e
R´partition des Versions
Au 1er Novembre 2010
29 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
e
Evolution des ´crans
Au 1er Novembre 2010
30 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
e e
R´partition des ´crans
Au 1er Novembre 2010
31 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Android Market
e ee
Syst`me standard de t´l´chargement d’applications
e
Pas de v´rifications des applications
Navigation laborieuse :
e
Par cat´gorie
e
Recherche par mots cl´s
Par gratuit / payant
Classement enfant, adolescent, adulte...
e e
N´cessite un terminal certifi´ (camera, 3G, compas...)
Gestion des autorisations avant l’installation
e
Possibilit´ de rendre payant les app.
Des centaines de milliers d’app.
32 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Android Market
25$ pour s’inscrire en tant que developpeur
70% du prix revient au developpeur, 30% a Google
Revenus via Google CheckOut
Achat & vente possible selon les pays
57% d’applications gratuites
App Store : 28%
Idem Blackberry App World, Nokia Ovi Store...
33 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Markets Alternatifs
AppsLib (Archos) : http://appslib.com
AndroLib : http://www.androlib.com
Market Samsung
...
e
Tout a fait autoris´ par Google
Libre de fonctionnement
e
Acces aux terminaux non certifi´s
34 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Sans Market
Via les outils du SDK
Via des applications disponibles sur le market et la carte SD
35 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
e
Environnement de d´veloppement
Outils :
Eclipse
SDK Android
ADT : Android Development Tools (plugin eclipse)
AVD : Android Virtual Device
ADB : Android Debug Bridge
36 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
e e
Architecture G´n´rale
37 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Noyau Linux
38 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Noyau Linux
Android repose sur un noyau Linux version 2.6
e
Gestion de la securit´
e
Gestion de la m´moire
Gestion des processus
e
Gestion r´seau
Drivers
...
Ce noyaux agit comme une couche d’abstraction entre le
e
mat´riel et le restes des couches applicatives.
39 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
e
Compatibilit´ Linux
e e ee e
Noyau d´riv´ de Linux mais a ´t´ modifi´ par Google :
Pas de systeme X-Window nativement
Ne supporte pas toutes les libraires GNU standards
e
Difficult´ de porter toutes les applications (ou librairies)
compatibles linux.
e
Mais le support de X-Window reste n´anmoins possible
e
Le Code de google n’est pas revers´ dans le noyau linux car
Android forme un nouvel arbre de developpement.
e
En Avril 2010 Google a annonc´ qu’il allaient employer une
e
´quipe pour travailler sur le systeme Linux.
40 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Android Runtime
41 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Android Runtime
Code Natif :
Codage via le Android NDK
JNI permet le pont entre le natif et Dalvik
e
Peu utilis´ sauf pour les jeux (habitude de programmeurs)
e
Permet des gains de performance parfois. Cela d´pend de
l’application.
42 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Android Runtime
DVM : Dalvik Virtual Machine
- Ecrite par Dan Bornstein
e
- Dalvik : village de pˆcheurs en islande
e e e
- Une sorte de JVM optimis´e pour les syst`mes limit´s en
e
m´moire et en puissance.
e e
- Ex´cute les applications ”.dex” compil´s depuis le code
automatiquement par le SDK avec l’outil ”dx”
e
- Utilise du ByteCode sp´cifique et non du ByteCode Java
e e e
- Optimis´e ´galement pour ˆtre ”multi-instance” sur un seul
terminal.
Aout 2010 : Oracle (Java) porte plainte envers Google pour
e e
leur impl´mentation de Dalvik qui serait bas´ sur le code
source de java...
43 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Android Runtime
Android inclus un ensemble de librairies de base proposant
e e
ainsi la quasi totalit´ des fonctionnalit´s disponibles dans le
language de programmation Java.
Chaque application sous Android utilise sa propre instance
d’une DVM.
- e
Pas de probl`me d’interaction entres les applications
- e e
Espace prot´g´
- e e
Pas de risque de plantage g´n´ral
- e e
D’ou la necessit´ d’une VM optimis´e !
44 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Librairies
45 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Librairies
Android inclus un ensemble de librairies C/C++
e
Utilis´es par les applications Android
e
Accessibles au d´veloppeur via le SDK
Quelques unes de ces librairies
e e e e
- Librairie Syst`me C : une impl´mentatition d´riv´ de
e
l’impl´mentation BSC des librairies standard C (libc)
- LibWebCore : Un moteur de navigateur internet moderne
e
utilis´ autant pour navigateur android que pour les vues web
e
int´grables
e
- SQLite : un systeme de gestion de base de donn´es relationnel
e
l´ger et puissant disponible pour toutes les applications.
46 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Librairies
...
e
- Librairies MultiMedia : bas´es sur ”PacketVideo’s
e
OpenCORE”. Int´gre le support de la lecture et de
e
l’enregistrement de nombreux formats audio, vid´o et image
(MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG...)
e e e
- Surface Manager : g`re l’acc`s et l’affichage des diff´rentes
vues (2D ou 3D) composant les applications
- SGL : Le moteur de rendu pour l’imagerie 2D
e e
- Librairie 3D : Une impl´mentation bas´e sur l’API OpenGL ES
e a e e
1.0. Int´grant ` la fois l’accel´ration mat´rielle (si disponible)
e
et l’acc´leration logicielle.
- FreeType : Librairie de rendu de police bitmap et vectorielles.
47 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Framework Applicatif
48 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Framework Applicatif
Plateforme de developpement Ouverte
- e
Permet des application riches et vari´es
- e
Acces au mat´riel
- Acces aux informations de localisation
- Lancement de services de fond
- Mise en place d’alarmes, de notifications
- ...
49 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Framework Applicatif
Plateforme de developpement Ouverte
e
Architecture concue pour simplifier la r´utilisation des
composants
e
Publication des capacit´s des applications
e
Les autres applications peuvent utiliser ces capacit´s
e
Charg´ facilement les apps.
50 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Framework Applicatif
e
Une application est compos´e d’un ensemble de services et de
e
syst`mes incluant :
e
Un ensemble de vues ”Views” utilis´es pour construire
l’application (listes, grilles, zone de saisies, boutons ou encore
e
navigateur web int´grable)
e
”Content Provider” permettant aux applications d’acc´der
e
aux donn´es d’autres applications (Contacts...) ou de partager
e
leur propres donn´es.
”Resource Manager” permettant d’acceder a des ressources
e
tel que des chaines de caract`res, des images ou des ”layout”
e e
(le tout param´trable selon de multiples crit`res : taille de
e
l’´cran, internationalisation...)
51 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Framework Applicatif
Mais aussi :
a
”Notification Manager” permettant ` chaque application
e e e
d’utliser la barre de statut g´n´rale pour y int´grer ses propres
informations.
”Activity Manager” : composant qui gere le cycle de vie d’une
application et fournit les outils de navigation applicative.
52 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Applications
53 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Framework Applicatif
e
Derni`re couche sur Android
e e e
Plusieurs sont int´gr´es dans le syst`me :
Ecran ”Home”
Gestion des Emails
Gestion des SMS/MMS
ee
Gestion de la t´l´phonie
Google Maps...
e
Application suppl´mentaires installables
e e
Toutes les applications sont ´crites via le mˆme SDK !
54 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
e e e
G´n´ralit´s
e
Les applications sont ´crites en Java
e
Le code compil´ ”dex” ainsi que les ressources (images,
e
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.
55 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
e
Ind´pendance
e a
Chaque application Android est isol´ des autres ` plusieurs
niveaux :
- Chaque application tourne sur son propre process Linux. Ce
e e
processus est lanc´ par Android d`s qu’une partie du code
e e e
n´cessite une ´x´cution et inversement tue les processus dont il
e
n’a plus d’utilit´.
- De plus chaque process utilise sa propre machine virtuelle
e
Dalvik. Ainsi chaque application poss`de son propre
environnement.
ea
- 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)
e
- Il est possible de forcer deux application de partager le mˆme
user ID (et donc de partager des fichiers nativement). Il est
e
egalement possible donc d’utiliser la mˆme VM et le mˆme e
processus Linux.
56 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
e
Ind´pendance
Un des aspect les plus important d’Android est la
e e
r´utilisabilit´
- Chaque application peut utiliser des ”morceaux d’autres
applications” (si elle le permettent)
- Par exemple si votre application permet de retoucher des
e
photos et que vous d´sirez publier cette photo vous pouvez
ea e e
utiliser toutes les applications d´j` pr´sentes pour r´aliser cette
a
tˆche (facebook, picasa, mail ...). Et sans utiliser le code de
cette application tierce juste en appeler la partie interessante.
Ainsi le systeme doit etre capable :
e
- De lancer n’importe quelle partie expos´e d’une application
e
sans en lancer la totalit´
e
- Donc les application Andoid n’ont pas de point d’entr´e global
e e ee
(m´thode main()). Mais sont compos´s d’´l´ments
e e e
ind´pendants ou chacun peut ˆtre lanc´ individuellement.
57 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Elements Fondamentaux
Activity
Service
BroadcastReceiver
ContentProvider
Intent
58 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Les Activity
e
Une activit´ (”Activity”) = une IHM pour une action
e
utilisateur pr´cise :
ee
- Liste d’´l´ments parmis lesquels l’utilisateur peut choisir
- Affichage d’une image avec un titre
- Affichage d’un calendrier pour choisir une date
Exemple d’une application de SMS :
e
- Une activit´ pour choisir un contact
e
- Une autre pour ´crire le message
e
- Une autre pour afficher un historique d’´changes.
e e
Chaque activit´ est ind´pendante des autres
e
Une activit´ doit heriter de la classe : android.app.Activity
59 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Les Activity
e
Une application est donc un ensemble d’activit´s
e e ea e
On doit d´finir quelle est la premi`re activit´ ` ex´cuter lors
du lancement de l’application
e
Pour naviguer dans l’application chaque activit´ doit
e e
elle-mˆme lancer l’activit´ suivante.
60 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Les Activity
e e a e
Chaque activit´ est assign´e ` une fenˆtre
e
- Plein ´cran
- Fenetre flottante
e e
Une activit´ peux aussi poss´der des sous fenetres
- Pop-up ...
61 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Les Activity
e e
Le rendu d’une activit´ est d´finit par :
Une ou un ensemble de vues
e
Les vues h´ritent de la classe android.view.View
e
Chaque vue controle une zone rectangulaire de l’activit´
e
L’organisation est d´finit par un arbre de ”Layout” ou chaque
feuille est une vue.
e
Un grand nombre de vues standards sont propos´es
(combobox, zone de texte, bouton...)
e e e
Possibilit´ de d´finir des vues personnalis´es
62 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Les Activity
Les layouts :
- Agents de placement
e
- Plusieurs layouts sont propos´s en standard
e e
Possibilit´ de d´finir ses propres Layout
Les layout sont utilisable via des fichier XML ou via le code
Java
63 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Les Activity
e
Pour r´sumer :
e e
Une fois l’arbre de vues d´fini on utilise la m´thode suivante :
- Activity.setContentView()
64 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Service
e
Un service ne poss`de pas d’interface
e
Tourne en arri`re plan en continue (ou presque)
Exemple :
- Lecture de musique
- e e
Collecte de donn´es affichables dans une activit´
- Suivi GPS
- e a
V´rification de mise ` jour
- ...
65 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Service
Lancement d’une application musicale
- e e
D´marrage de l’activit´ de ”choix de chanson”
- L’utilisateur lance la musique
- Le service diffuse cette musique
- e
L’utilisateur peut quitter l’ ”application” en fermant l’activit´
- ae
La musique continue ` ˆtre diffus´e !e
66 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Service
Pour communiquer avec un service il faut :
e e
- S’y connecter (il se lance si il ´tait arret´)
e
- Utiliser l’interface que pr´sente ce service
- - Exemple : Play(), Pause(), next() ...
e
Un service s’ex´cute dans un Thread et donc ne bloque pas le
reste du terminal quand il tourne en fond.
67 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Broadcast Receiver
Les broadcast receiver sont :
- e e e
Des ´lements inactifs qui attendent un ´v`nement
- e e e
Il y a des ´v`nements syst`me :
- - Batterie faible
- - Changement de langue du syst`mee
- - L’utilisateur a pris une photo
- - ...
e e e
Il est possible de d´finir ses propres ´v`nements
e
H´ritent de la classe android.content.BroadcastReceiver
68 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Broadcast Receiver
Une application peux contenir plusieur receiver : un par
e e
´v`ment important
e
Les receiver n’ont ´videmment pas d’interface
e
Ils peuvent lancer des activit´s en cas de besoin
e
Ils peuvent ´galement utiliser le NotificationManager pour
a ee
signaler quelque chose ` l’utilisateur (pr´f´rable)
- Icone, vibration, alerte sonore, clignotement diode...
69 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Content Provider
Les content provider permettent de partager du contenu entre
les applications
Une application s’en sert pour rendre public certaines de ses
e
donn´es
e e e
Le donn´es sont donc expos´es dans une classe h´ritant de
android.content.ContentProvider
- Methode query()
- Insert()
- Update()
- delete()...
70 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Content Provider
e a
Les autres applications n’acc`dent pas directement ` la classe
de ContentProvider
Utilisation d’un ContentResolver qui va rediriger les requetes
vers le provider voulu
a e
Si l’on tente d’acceder ` une resouce d’une application n’´tant
e e
pas en cours d’ex´cution le syst`me Android se charge de la
lancer avant.
71 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Intent
e e
Les content providers sont activ´s par une requˆte d’un
content resolver
Mais les 3 autres systemes (Activity, Service, BroadCast
e e
Receiver) sont activ´s par des messages asynchrone appell´s
”Intent”
e
Un intent d´rive de android.content.Intent
e
Un intent poss`de une action et un contenu particulier
72 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Intent
e e e
Pour les activit´s et les services il nomme l’action d´sir´e et
e e
pr´cise l’URI des donn´es sur lesquelles agir.
- Afficher / image
- Editer / texte
- ...
Pour les broadcast receivers il se contente de nommer l’action
a
` annoncer
- Batterie faible
- ...
73 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Intent
e
Les Intents et les activit´s :
e a
- Lancement en passant un Intent en param`tre ` une des
e
m´thodes suivantes :
* Context.startActivity()
* Activity.startActivityForResult()
e a
- L’activity peut acc´der ` celui ci avec :
* getIntent()
e
- Si le syst`me doit envoyer des nouveaux intent :
e
* Appel de onNewIntent() sur l’activit´
- En cas de resultat attendu
e
* Appel de onActivityResult() sur l’activit´ appelante
74 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Intent
Les Intents et les services :
e a e
- Lancement en passant un Intent en param`tre ` la m´thode
suivante :
* Context.startService()
e e
* Le systeme applera ensuite la m´thode onStart() en pr´cisant
e
cet Intent en param`tre
e a e
- Connexion en passant un Intent en param`tre ` la m´thode
suivante :
* Context.bindService()
e e
* Le Systeme appelera ensuite la m´thod onBind() en pr´cisant
e
cet Intent en param`tre
75 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Intent
Les Intents et les Broadcast receiver :
e e
- Une application voulant envoyer un ´v`nement va utiliser une
e
des m´thodes suivantes :
* Context.sendBroadcast()
* Context.sendOrderedBroadcast()
* Context.sendStickyBroadcast()
e e
- Le syst`me va alors appeler la m´thode onReceive() sur tous
ee e e
les broadcast receivers int´r´ss´s en passant en param`tre
l’Intent.
76 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Intent
e
La cat´gorie
e e
- Une chaine de caract`re pr´cisant quel type de composant
e
peut g`rer l’intent.
e e e e
- Plusieurs cat´gories peuvent ˆtre pr´cis´es.
- Exemples :
e
* CATEGORY BROWSABLE : Le contenu peut ˆtre affich´ e
dans le navigateur
e
* CATEGORY HOME : L’activit´ est de type Home
e
* CATEGORY LAUNCHER : L’activit´ est lancable par le
e e
launcher et donc doit y ˆtre pr´sente
e
* CATEGORY PREFERENCE : l’activit´ est un panneau de
ee
pr´f´rences
77 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Intent
Quelques exemples :
- ACTION VIEW content://contacts/people/1 – Affiche les
information sur le contact 1
- ACTION DIAL content://contacts/people/1 – Affiche le mode
d’appel rempli avec les informations du contact 1
- ACTION VIEW tel:123 – Affiche le mode d’appel rempli avec
”123”. (ACTION VIEW s’adapte donc au contenu)
- ACTION DIAL tel:123 – Idem
- ACTION EDIT content://contacts/people/1 – Permet de
modifier les informations du contact 1
- ACTION VIEW content://contacts/people/ – Affiche la liste
e e
des contacts (le choix d’un de ces contact g´n´rera un Intent
pour afficher ce contact)
78 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Manifest
Fichier XML
e
Pr´cise l’architecture de l’application
Chaque application doit en avoir un
a
AndroidManifest.xml ` la racine du projet
79 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Manifest
Contenu :
e
- Pr´cise le nom du package java utilisant l’application. Cela
sert d’identifiant unique !
e
- Il d´crit les composants de l’application
e
- - Liste des activit´s, services, broadcast receivers
e e
- - Pr´cise les classes qui les impl´mentent
e e a e
- - Pr´cise leurs capacit´s (` quels intents ils r´agissent)
e
- - Ceci permet au syst`me de savoir comment lancer chaque
partie de l’application afin de satisfaire au principe de
e e
r´utilisabilit´.
80 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Manifest
Contenu suite :
- e
D´finit les permissions de l’application
- - Droit de passer des appels
- - a
Droit d’acceder ` Internet
- - Droit d’acceder au GPS
- - ...
- e e
Pr´cise la version d’Android minimum n´cessaire
- e e
D´clare les librairies utilis´es
- e
D´clare des outils d’Instrumentation (uniquement pour le
e
d´veloppement)
81 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Manifest
Conventions :
ee
- Seuls deux ´l´ments sont obligatoire
- - < manifest > : contient le package, la version... Englobe tout
le fichier
e
- - < application > : d´crit l’application et contiendra la liste de
ses composants.
e e
- Les donn´es sont pass´es en tant qu’attribut et non en tant
que contenu
- Tous les attributs commencent par ”android:” (sauf quelques
un dans < manifest >)
82 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Manifest
Les ressources
e
- Au lieu de contenir les donn´es en tant que tel le fichier
a
manifest peut faire appel ` des ressources
- < activityandroid : icon = ”@drawable/smallPic”... >
e e
- Ces ressources sont d´finies dans le r´pertoire ”res” de
l’application.
83 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Manifest
Permissions
e
- Une application ne peux pas utiliser certaines fonctionnalit´s
e
sauf si il le pr´cise dans le fichier Manifest
e e a
- Il faut donc pr´ciser les permissions n´cessaires grace ` :
< uses − permission >
- Il existe des permission standard :
- - android.permission.CALL EMERGENCY NUMBERS
- - android.permission.READ OWNER DATA
- - android.permission.SET WALLPAPER
- - android.permission.DEVICE POWER
e
Il est possible de d´finir ses propres permissions
84 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Manifest
Intent Filter
a
- Ils informent le systeme ` quelle intent les composants
e
peuvent r´agir
- Un composant peut avoir plusieurs filtres
- Editeur de texte
- - Filtre pour editer un document existant
- - Filtre pour initier un nouveau document
e a
- Un filtre doit posseder une ”action” qui d´finit ` quoi il
correspond
85 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Manifest
Exemple
86 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Activity & Task
e e
R´sum´ :
- L’application A doit afficher une carte
e e
- A pr´pare l’intent avec les donn´es necessaires
- A appele startActivity() avec cet intent
- Le systeme trouve l’application B qui sait gerer cet Intent
- L’application B affiche la carte
- L’utilisateur ferme cette carte (bouton back)
- L’application A reprends la main
87 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Activity & Task
Du point de vue de l’utilisateur :
- 1 seule application (A et B sont confondues)
e
Du point de vue du syst`me :
- 2 applications
- 2 DVM
- 2 process
a
- 1 Tˆche = 1 Application au sens utilisateur.
88 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Activity & Task
a
Une tˆche :
e
- Est une pile d’activit´s
e ee e
- La premi`re est celle qui a ´t´ initi´e par l’utilisateur
e e
- Les activit´s peuvent provenir de diff´rentes applications
- L’ensemble forme un tout
e
- - Mis en arriere plan en mˆme temps
- - Remise au premier plan dans son ensemble
e
Comportement par d´faut modifiable via le manifest et le tag
”< activity >” et ses flags
89 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Processus & Threads
e
Quand le premier composant d’une application n´cessite une
e
ex´cution Android demarre un nouveau processus Linux pour
gerer ce composant
e
Chaque composant peut pr´ciser dans la Manifest (via
e
l’attribut ”process”) si il doit s’ex´cuter dans un nouveau
processus ou si il doit partager un processus existant
Deux composant de deux applications peuvent aussi partager
e
le mˆme processus si :
e
- Elle utilisent le mˆme Linux User ID
e e e
- Elles sont sign´es par la mˆme autorit´
90 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Processus & Threads
e e
Attentions pour les composant utilis´ dans le mˆme processus
e
- Ne pas faire de longues op´rations lors des appels par le
Systeme ( View.onKeyDown() ) sinon cela bloquera tout le
reste des composants.
a
- Penser ` utiliser des Threads pour les traitements longs.
- Utiliser la classe classique Java de Threads
- Android fournit aussi des classes utilitaires pour simplifier
l’utilisation des Threads
91 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Cycle de Vie
e e e
Une activit´ poss`de trois ´tats :
e
- Active (running) : Quand l’activit´ est au premier plan et
recoit les actions utilisateur.
- Paused : Quand elle est toujours visible mais n’a pas le focus
e e
(autre activit´ transparente par dessus ou activit´ ne prenant
e
pas tout l’´cran)
- - Toujours vivante
e e e
- - Mais peut etre tu´e en cas de resources tr`s limit´es
- Stopped : Quand elle n’est plus visible
- - Toujours vivante
e e e e
- - Mais sera tu´e d`s que des resources seront n´c´ssaires.
92 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Cycle de Vie
e e
Le syst`me tue les activit´s en etat ”stopped” (ou ”paused”)
e
de deux mani`res :
e
- En appelant la m´thode finish()
- En tuant le processus tout simplement
e e
Quand l’activit´ sera a nouveau demand´e :
e e
- Doit ˆtre compl´tement reconstruite
e
- Doit Potentiellement recharger son dernier ´tat
93 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Cycle de Vie
e e e
Une activit´ est notifi´e de ses changement d’´tat par l’appel
a e
` ses m´thodes :
- void onCreate(Bundle savedInstanceState)
- void onStart()
- void onRestart()
- void onResume()
- void onPause()
- void onStop()
- void onDestroy()
94 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Cycle de Vie
e
Afin de sauvegarder le contexte le syst`me appele
”onSaveInstanceState()” avant de rendre l’application
potentiellement tuable (paused...)
e
Cet appel fournit un bundle ”cl´/valeurs” pour que le
e e
d´veloppeur puisse sauvegarder l’´tat
Au prochain appel de ”onCreate()” ce bundle sera fournit
e a
Il est ´galement fournit via un appel `
”onRestoreInstanceState()”
a
L’appel ` la sauvegarde n’est faite qu’en cas de risque de
e e
terminaison de l’activit´ par le syst`me et non si cela vient
d’une action utilisateur (back)
95 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Hello World
e
Cr´er un nouveau projet :
96 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Hello World
Organisation des dossiers :
src : sources
e ee
gen : code g´n´r´
res : ressources
drawable : images
layout : layout
values : constantes
Manifest
97 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Hello World
Manifest :
98 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Hello World
Ressources (Layout, String, Images)
e
On y acc`de par ”@dossier/nom” ou ”R.dossier.nom”
Ressources alternatives : selon la langue, le sdk, l’ecran...
99 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Hello World
Ativity
100 / 100
Organisation du module
Generalite
e
Le Syst`me
Fonctionnement des Applications
Hello World
e
Ex´cution de l’application :
e
Sur un ´mulateur
Sur un terminal
101 / 100
Get documents about "