Sie sind auf Seite 1von 173

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Cours Android
D eveloppement et API Romain Raveaux1
1 Laboratoire

LI PolytechTours romain.raveaux at univ-tours.fr

Mars 06-03, 2012

1 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Sommaire

Organisation du module

2 3

G en eralit e Le Syst` eme

Fonctionnement des Applications

Une Approche Syst` eme

2 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Romain Raveaux

Doctorat en informatique 2 Masters: (a)R eseaux et T el ecommunications; (b) Maths appliqu ees Recherche au Laboratoire LI
Comparaison de graphes

Enseignements PolytechTours (DI et D2i)


D eveloppement Android Bus de terrain Parcours de graphes

3 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Romain Raveaux

Doctorat en informatique 2 Masters: (a)R eseaux et T el ecommunications; (b) Maths appliqu ees Recherche au Laboratoire LI
Comparaison de graphes

Enseignements PolytechTours (DI et D2i)


D eveloppement Android Bus de terrain Parcours de graphes

3 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Romain Raveaux

Doctorat en informatique 2 Masters: (a)R eseaux et T el ecommunications; (b) Maths appliqu ees Recherche au Laboratoire LI
Comparaison de graphes

Enseignements PolytechTours (DI et D2i)


D eveloppement Android Bus de terrain Parcours de graphes

3 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Romain Raveaux

Doctorat en informatique 2 Masters: (a)R eseaux et T el ecommunications; (b) Maths appliqu ees Recherche au Laboratoire LI
Comparaison de graphes

Enseignements PolytechTours (DI et D2i)


D eveloppement Android Bus de terrain Parcours de graphes

3 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Romain Raveaux

Doctorat en informatique 2 Masters: (a)R eseaux et T el ecommunications; (b) Maths appliqu ees Recherche au Laboratoire LI
Comparaison de graphes

Enseignements PolytechTours (DI et D2i)


D eveloppement Android Bus de terrain Parcours de graphes

3 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Romain Raveaux

Doctorat en informatique 2 Masters: (a)R eseaux et T el ecommunications; (b) Maths appliqu ees Recherche au Laboratoire LI
Comparaison de graphes

Enseignements PolytechTours (DI et D2i)


D eveloppement Android Bus de terrain Parcours de graphes

3 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Romain Raveaux

Doctorat en informatique 2 Masters: (a)R eseaux et T el ecommunications; (b) Maths appliqu ees Recherche au Laboratoire LI
Comparaison de graphes

Enseignements PolytechTours (DI et D2i)


D eveloppement Android Bus de terrain Parcours de graphes

3 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Romain Raveaux

Doctorat en informatique 2 Masters: (a)R eseaux et T el ecommunications; (b) Maths appliqu ees Recherche au Laboratoire LI
Comparaison de graphes

Enseignements PolytechTours (DI et D2i)


D eveloppement Android Bus de terrain Parcours de graphes

3 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

D eveloppement Mobile
D eveloppement Android G en eralit e Android Organisation du syst` eme Android SDK Application Architecture Android Architecture Biblioth` eques Natives Runtime HAL
4 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

D eveloppement Mobile
D eveloppement Android G en eralit e Android Organisation du syst` eme Android SDK Application Architecture Android Architecture Biblioth` eques Natives Runtime HAL
4 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

D eveloppement Mobile
D eveloppement Android G en eralit e Android Organisation du syst` eme Android SDK Application Architecture Android Architecture Biblioth` eques Natives Runtime HAL
4 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

D eveloppement Mobile
D eveloppement Android G en eralit e Android Organisation du syst` eme Android SDK Application Architecture Android Architecture Biblioth` eques Natives Runtime HAL
4 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

D eveloppement Mobile
D eveloppement Android G en eralit e Android Organisation du syst` eme Android SDK Application Architecture Android Architecture Biblioth` eques Natives Runtime HAL
4 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

D eveloppement Mobile
D eveloppement Android G en eralit e Android Organisation du syst` eme Android SDK Application Architecture Android Architecture Biblioth` eques Natives Runtime HAL
4 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

D eveloppement Mobile
D eveloppement Android G en eralit e Android Organisation du syst` eme Android SDK Application Architecture Android Architecture Biblioth` eques Natives Runtime HAL
4 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

D eveloppement Mobile
D eveloppement Android G en eralit e Android Organisation du syst` eme Android SDK Application Architecture Android Architecture Biblioth` eques Natives Runtime HAL
4 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Volume horaire

4h CM 14h TP

5 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Volume horaire

4h CM 14h TP

5 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Plan des TPs


Projet : Chasse aux tr esors (14h)
Getting started (Hello World!, D ebugger) (2h) Communication inter-processus : Intent (2h) Communication inter-processus : Services (2h) Communication inter-processus : Broadcast Receiver (2h) Lecture/Ecriture XML(2h)

Traitement de la vid eo Applications natives (C++) Google Maps API (G eo-localisation) Projets : Smart Image Gallery Projets : G eolocalisation des Stations V elo
6 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Plan des TPs


Projet : Chasse aux tr esors (14h)
Getting started (Hello World!, D ebugger) (2h) Communication inter-processus : Intent (2h) Communication inter-processus : Services (2h) Communication inter-processus : Broadcast Receiver (2h) Lecture/Ecriture XML(2h)

Traitement de la vid eo Applications natives (C++) Google Maps API (G eo-localisation) Projets : Smart Image Gallery Projets : G eolocalisation des Stations V elo
6 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Plan des TPs


Projet : Chasse aux tr esors (14h)
Getting started (Hello World!, D ebugger) (2h) Communication inter-processus : Intent (2h) Communication inter-processus : Services (2h) Communication inter-processus : Broadcast Receiver (2h) Lecture/Ecriture XML(2h)

Traitement de la vid eo Applications natives (C++) Google Maps API (G eo-localisation) Projets : Smart Image Gallery Projets : G eolocalisation des Stations V elo
6 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Plan des TPs


Projet : Chasse aux tr esors (14h)
Getting started (Hello World!, D ebugger) (2h) Communication inter-processus : Intent (2h) Communication inter-processus : Services (2h) Communication inter-processus : Broadcast Receiver (2h) Lecture/Ecriture XML(2h)

Traitement de la vid eo Applications natives (C++) Google Maps API (G eo-localisation) Projets : Smart Image Gallery Projets : G eolocalisation des Stations V elo
6 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Plan des TPs


Projet : Chasse aux tr esors (14h)
Getting started (Hello World!, D ebugger) (2h) Communication inter-processus : Intent (2h) Communication inter-processus : Services (2h) Communication inter-processus : Broadcast Receiver (2h) Lecture/Ecriture XML(2h)

Traitement de la vid eo Applications natives (C++) Google Maps API (G eo-localisation) Projets : Smart Image Gallery Projets : G eolocalisation des Stations V elo
6 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Plan des TPs


Projet : Chasse aux tr esors (14h)
Getting started (Hello World!, D ebugger) (2h) Communication inter-processus : Intent (2h) Communication inter-processus : Services (2h) Communication inter-processus : Broadcast Receiver (2h) Lecture/Ecriture XML(2h)

Traitement de la vid eo Applications natives (C++) Google Maps API (G eo-localisation) Projets : Smart Image Gallery Projets : G eolocalisation des Stations V elo
6 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Plan des TPs


Projet : Chasse aux tr esors (14h)
Getting started (Hello World!, D ebugger) (2h) Communication inter-processus : Intent (2h) Communication inter-processus : Services (2h) Communication inter-processus : Broadcast Receiver (2h) Lecture/Ecriture XML(2h)

Traitement de la vid eo Applications natives (C++) Google Maps API (G eo-localisation) Projets : Smart Image Gallery Projets : G eolocalisation des Stations V elo
6 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Plan des TPs


Projet : Chasse aux tr esors (14h)
Getting started (Hello World!, D ebugger) (2h) Communication inter-processus : Intent (2h) Communication inter-processus : Services (2h) Communication inter-processus : Broadcast Receiver (2h) Lecture/Ecriture XML(2h)

Traitement de la vid eo Applications natives (C++) Google Maps API (G eo-localisation) Projets : Smart Image Gallery Projets : G eolocalisation des Stations V elo
6 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Plan des TPs


Projet : Chasse aux tr esors (14h)
Getting started (Hello World!, D ebugger) (2h) Communication inter-processus : Intent (2h) Communication inter-processus : Services (2h) Communication inter-processus : Broadcast Receiver (2h) Lecture/Ecriture XML(2h)

Traitement de la vid eo Applications natives (C++) Google Maps API (G eo-localisation) Projets : Smart Image Gallery Projets : G eolocalisation des Stations V elo
6 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Plan des TPs


Projet : Chasse aux tr esors (14h)
Getting started (Hello World!, D ebugger) (2h) Communication inter-processus : Intent (2h) Communication inter-processus : Services (2h) Communication inter-processus : Broadcast Receiver (2h) Lecture/Ecriture XML(2h)

Traitement de la vid eo Applications natives (C++) Google Maps API (G eo-localisation) Projets : Smart Image Gallery Projets : G eolocalisation des Stations V elo
6 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Plan des TPs


Projet : Chasse aux tr esors (14h)
Getting started (Hello World!, D ebugger) (2h) Communication inter-processus : Intent (2h) Communication inter-processus : Services (2h) Communication inter-processus : Broadcast Receiver (2h) Lecture/Ecriture XML(2h)

Traitement de la vid eo Applications natives (C++) Google Maps API (G eo-localisation) Projets : Smart Image Gallery Projets : G eolocalisation des Stations V elo
6 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Les r` egles

Ne pas perturber le cours:


Silence Rendre les comptes rendus de TP ` a temps.

7 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Les r` egles

Ne pas perturber le cours:


Silence Rendre les comptes rendus de TP ` a temps.

7 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

L evaluation

Un contr ole terminal Les comptes rendus

8 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

L evaluation

Un contr ole terminal Les comptes rendus

8 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Bibliographie

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

9 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Bibliographie

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

9 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Bibliographie

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

9 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Bibliographie

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

9 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Bibliographie

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

9 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Pr esentation G en erale

10 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Quest-ce que cest ?

Souvent pr esent e comme lalternative de Google ` a liPhone Syst` eme dexploitation pour terminaux mobiles Bas e sur Linux Open Source (licence Apache)

11 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Fonctionnalit es 1/2
Framework applicatif avec r eutilisation et remplacement possible des composants DVM : Dalvik Virtual Machine (machine virtuelle optimis ee pour les p eriph eriques mobiles) Navigateur int egr e bas e sur le moteur WebKit (OpenSource) Librairie 2D d edi ee Gestion de la 3D bas ee sur une impl ementation dOpenGL ES 1.0 (avec support de laccel eration mat erielle) Base de donn ees SQLite Gestion des ecrans tactiles et du Multitouch

12 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Fonctionnalit es 2/2
Multim edia : support de la plupart des formats classiques dimages, de videos et audios (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) T el ephonie GSM (selon hardware) Bluetooth, EDGE, 3G et WiFi (selon hardware) Cam era, GPS, compas et accel erom` etre (selon hardware) Environnement de d eveloppement riche incluant :
Un emulateur (avec une interface de contr ole) Des outils de deboggage Outils de proling m emoire et performance Un plugin pour lIDE Eclipse

13 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Historique

D evelopp e 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 ecembre 2008 : ARM Holdings, Atheros Communications, Asustek Computer Inc, Garmin Ltd, Softbank, Sony Ericsson, Toshiba Corp, Vodafone

14 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Terminaux Vis es

T el ephones 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 efrigerateur, Machine ` a laver...

15 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Et ca ressemble ` a quoi ?

16 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Mobiles Disponibles
En 2008 : HTC Dream / G1

17 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Mobiles Disponibles
En 2009 : Une quizaine (HTC, LG, Samsung, Motorola...)

18 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Mobiles Disponibles
En 2010 : De tr` es nombreux mobiles

19 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Concurrents

Apple iPhone OS : un des leaders en t el ephonie, ferm e... Windows Phone 7 : En progression avec la chute de windows mobile 6, ferm e... Palm : pr ecurseur, en perte de vitesse, PalmPr e? Blackberry : plut ot d edi e entreprise mais se d emocratise Symbian : passage en open source octobre 2009 Mais la plupart de ses concurrents nont pas la exibilit e dAndroid qui ne se destine pas quaux t el ephones mobiles !

20 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Parts de March e

21 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Les versions...
Versions dAndroid :
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) 3.0 : Honeycomb (F evrier 2011) 4.0 : Ice Cream Sandwich (ICS) (D ecembre 2011)

Remarques :
Evolution tr` es rapide ! Probl ematique de d eploiement

22 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Cupcake 1.5
Support du Bluetooth A2DP et AVRCP Possibilit e de se connecter automatiquement ` a un kit bluetooth Ajouts de widget Ajout des dossiers sur le Home Transition d ecrans anim ees

30 Avril 2009 Linux Kernel 2.6.27 Possibilit e denregistrer et de regarder des vid eos Upload de vid eos vers Youtube et dimages vers picasa directement depuis le t el ephone Un nouveau clavier avec saisie pr edictive

23 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Donut 1.6
Am elioration des recherches pour int egrer les bookmarks, lhistorique, les contacts et le web depuis l ecran de d emarrage 15 Septembre 2009 Linux Kernel 2.6.29 Nouvelle version du market Refonte de la camera et de la galerie (suppression multiple...) Mise ` a jour de la recherche vocale. R eponses plus rapides et meilleure int egration (appel de contacts..) Support de nouveaux protocoles de communication Support des ecrans en WVGA Am elioration des performances Framework Gesture disponible Navigation Google Gratuite

24 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Eclair 2.1
Support de Microsoft Exchange Support du ash int egr e pour lappareil photo 26 Octobre 2009 Linux Kernel 2.6.29 Optimisation des performance Support des ecrans de taille et de r esolution di erentes Interface revue Nouvelle interface pour le navigateur et support d HTML5 Nouvelle liste des contacts Int egration de Google Maps 3.1.2 Zoom digital Am elioration du Multitouch Am elioration du clavier virtuel Bluetooth 2.1 Live Wallpapers

25 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Froyo 2.2
Mise ` a jour du Launcher Support du Hotspot Wi-Fi 20 Mai 2010 Linux Kernel 2.6.32 Am elioration g en erale de lOS (vitesse, memoire...) Mise en place de JIT Integration du moteur JavaScript V8 de chrome dans le navigateur Amelioration du support de Microsoft Exchange Mise ` a jour du Market et mise ` a jour automatiques Passage rapide dun clavier dune langue ` a une autre

26 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Gingerbread 2.3

Novembre 2010 Linux Kernel 2.6.xxx Support des technologies NFC (Near Field Communication) Client SIP am eior e

27 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

HoneyComb 3.0

F evrier 2011 Orient e Tablette Prise en charge du multi-coeurs

28 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Ice Cream Sandwich

D eblocage par reconnaissance de visage. Am elioration de la navigation internet avec le navigateur Chrome. Non support du ash. Gestion des form factory sans touches tactiles.

29 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Evolution des Versions

Au 1er Novembre 2010

30 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

R epartition des Versions


Au 1er Novembre 2010

31 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Evolution des ecrans


Au 1er Novembre 2010

32 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

R epartition des ecrans


Au 1er Novembre 2010

33 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Android Market
Syst` eme standard de t el echargement dapplications Pas de v erications des applications Navigation laborieuse :
Par cat egorie Recherche par mots cl es Par gratuit / payant

Classement enfant, adolescent, adulte... N ecessite un terminal certi e (camera, 3G, compas...) Gestion des autorisations avant linstallation Possibilit e de rendre payant les app. Des centaines de milliers dapp.
34 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Android Market

25$ pour sinscrire en tant que developpeur 70% du prix revient au developpeur, 30% a Google Revenus via Google CheckOut Achat & vente possible selon les pays 57% dapplications gratuites App Store : 28% Idem Blackberry App World, Nokia Ovi Store...

35 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Markets Alternatifs

AppsLib (Archos) : http://appslib.com AndroLib : http://www.androlib.com Market Samsung ... Tout a fait autoris e par Google Libre de fonctionnement Accessible aux terminaux non certi es

36 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Sans Market

Via les outils du SDK Via des applications disponibles sur le market et la carte SD

37 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Environnement de d eveloppement

Outils :
Eclipse SDK Android ADT : Android Development Tools (plugin eclipse) AVD : Android Virtual Device ADB : Android Debug Bridge

38 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Android nest pas Linux

Android : un syst` eme bas e sur Linux ... mais avec tellement de modications - - > pas consid erer comme un syst` eme Linux Android nest pas un OS GNU/Linux Rumeur : Linux 3.3 et Android : d ebut de fusion du noyau

39 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Linux sur p eriph eriques mobiles ?

GNU/Linux ne convient pas aux appareils mobiles Google a donc modi e le noyau Linux Android est open source.

40 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Android taill e pour lembarqu e

P eriph eriques avec peu de ressources P eriph eriques avec des ressources di erentes P eriph eriques avec une utilisation born ee
Smart Phone, lecteur de salon, auto-radio....

AOSP (Android Open Source Project)


Licence Apache

41 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Architecture G en erale

42 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Architecture G en erale

5 couches : noyau, biblioth` eques natives, runtime, framework, application

43 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Noyau
Noyau Linux 2.6 (mais modi e) Choisi pour sa stabilit e, sa maturit e et louverture du code Principal Changement : Suppression des IPC SysV remplacer par Binder
Binder proche de CORBA. Economique en ressource d edi e aux architectures qui reposent pas activement sur la gestion de processus.

Gestion de la m emoire di erente. SHM POSIX mais simpli e. Partage de m emoire entre processus via Binder Syst` eme embarqu e oblige lacc` es aux journaux ne peut pas se faire via /var/log/* Int egration dun logger
44 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Noyau

En standard par de fonction pour terminer lapplication Viking Killer (Out Of Memory Management) Pour t ache de tuer processus quand la m emoire vient ` a manquer

45 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Noyau Linux

46 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Noyau Linux
Android repose sur un noyau Linux version 2.6 Gestion de la securit e Gestion de la m emoire Gestion des processus Gestion r eseau Drivers ... Ce noyaux agit comme une couche dabstraction entre le mat eriel et le restes des couches applicatives.

47 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Compatibilit e Linux

Noyau d eriv e de Linux mais a et e modi e par Google : Pas de syst` eme X-Window nativement Ne supporte pas toutes les libraires GNU standards Dicult e de porter toutes les applications (ou librairies) compatibles linux. Mais le support de X-Window reste n eanmoins possible Le Code de google nest pas revers e dans le noyau linux car Android forme un nouvel arbre de d eveloppement.

48 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Biblioth` eques Natives

Elles fournissent un acc` es direct aux ressources du syst` eme Une couche dabstraction au framework Java Android

49 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Librairies

50 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Librairies
Android inclus un ensemble de librairies C/C++ Utilis ees par les applications Android Accessibles au d eveloppeur via le SDK Quelques unes de ces librairies
- Librairie Syst` eme C : une impl ementation d eriv e de limpl ementation BSC des librairies standard C (libc) - LibWebCore : Un moteur de navigateur internet moderne utilis e autant pour navigateur android que pour les vues web int egrables - SQLite : un syst` eme de gestion de base de donn ees relationnel l eger et puissant disponible pour toutes les applications.

51 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Biblioth` eques Natives : Bionic Libc

Elles ne reposent pas sur la classique GNU Libc. Sa propre biblioth` eque C appel ee Bionic Libc. Pas lensemble des fonctions POSIX. Bionic Libc ne prend en charge que les architectures ARM et x86. Bon support ARM au revoir Power PC ou MIPS Les threads sont incompatibles avec POSIX

52 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Biblioth` eques Natives (les connues)

SQLite WebKit FreeType

53 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Biblioth` eques Natives : Google made

Le media framework : codec, compression, lecture, ecriture. Surface Manager : Dessiner ` a l ecran sinterface avec le noyau par framebuer.

54 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Librairies
...
- Librairies MultiMedia : bas ees sur PacketVideos OpenCORE. Int egre le support de la lecture et de lenregistrement de nombreux formats audio, vid eo et image (MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG...) - Surface Manager : g` ere lacc` es et lachage des di erentes vues (2D ou 3D) composant les applications - SGL : Le moteur de rendu pour limagerie 2D - Librairie 3D : Une impl ementation bas ee sur lAPI OpenGL ES 1.0. Int egrant ` a la fois lacc el eration mat erielle (si disponible) et lacc el eration logicielle. - FreeType : Librairie de rendu de police bitmap et vectorielles.

55 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Android Runtime

56 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Android Runtime
DVM : Dalvik Virtual Machine
- Ecrite par Dan Bornstein - Dalvik : village de p echeurs en islande - Une sorte de JVM optimis ee pour les syst` emes limit es en m emoire et en puissance. - Ex ecute les applications .dex compil es depuis le code automatiquement par le SDK avec loutil dx - Utilise du ByteCode sp ecique et non du ByteCode Java - Optimis ee egalement pour etre multi-instance sur un seul terminal.

Aout 2010 : Oracle (Java) porte plainte envers Google pour leur impl ementation de Dalvik qui serait bas e sur le code source de java... Proc` es repouss e en 2012.
57 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Android Runtime : Compilation

Deux passages :
.JAVA vers .CLASS Concat enation des .CLASS en .DEX

Une application cest :


Le bytecode DEX des ressources (images, sons...)

Le tout regroup e dans un package .APK

58 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Android Runtime

Android inclus un ensemble de librairies de base proposant ainsi la quasi totalit e des fonctionnalit es disponibles dans le langage de programmation Java. Chaque application sous Android utilise sa propre instance dune DVM.
Pas de probl` eme dinteraction entres les applications Espace prot eg e Pas de risque de plantage g en eral Do` u la n ecessit e dune VM optimis ee !

59 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Android Runtime

Au d emarrage dAndroid:
Une machine virtuelle est lanc ee an de pr e-charger presque 2000 classes. Zygote

Les instances de Dalvik initi ees par le lancement dapplications sont des forks de Zygote. Un cache est mis en place d` es le d emarrage pour acc el erer le chargement du bytecode DEX.

60 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Android Runtime

Une machine virtuelle JAVA reposant sur un syst` eme GNU/Linux ne serait pas utilisable. Un m ecanisme de compilation ` a la vol ee (JIT) permet dacc el erer lex ecution. Les Core Libraries int egrent lAPI standard JAVA J2SE 1.5. Des fonctionnalit es sont enlev ees : toolkit SWING, fonctions dimpression.

61 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Android Runtime

Code Natif : Codage via le Android NDK JNI permet le pont entre le natif et Dalvik Peu utilis e sauf pour les jeux (habitude de programmeurs) Permet des gains de performance parfois. Cela d epend de lapplication.

62 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Framework Applicatif
Framework ecrit en Java. Fournit tout ce que les applications ont besoin. API du framework d ecrite dans la documentation du SDK ements du framework : El

Activity Manager : cycle de vie des applications (backstack). Assure le multi t ache Package Manager : Manipulation du format .apk Window Manager : utilise Surface Manager. Ressource Manager : Tout ce qui nest pas du code. Content Manager : Partage des donn ees entre processus View System : equivalent dun toolkit GTK+. G` ere le rendu HTML Telephony Service : fournit lacc` es aux services GSM, 3G, GPRS Location Service : fournit lacc` es ` a la gestion du GPS. Bluetooth Service Wi Service Sensor Service

63 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Framework Applicatif

Framework ecrit en Java.

64 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Framework Applicatif

65 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Framework Applicatif

Plateforme de developpement Ouverte


Permet des application riches et vari ees Acces au mat eriel Acces aux informations de localisation Lancement de services de fond Mise en place dalarmes, de notications ...

66 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Framework Applicatif

Plateforme de developpement Ouverte Architecture concue pour simplier la r eutilisation des composants Publication des capacit es des applications Les autres applications peuvent utiliser ces capacit es Charg e facilement les apps.

67 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Framework Applicatif
Une application est compos ee dun ensemble de services et de syst` emes incluant : Un ensemble de vues Views utilis ees pour construire lapplication (listes, grilles, zone de saisies, boutons ou encore navigateur web int egrable) Content Provider permettant aux applications dacc eder aux donn ees dautres applications (Contacts...) ou de partager leur propres donn ees. Resource Manager permettant dacc eder a des ressources tel que des chaines de caract` eres, des images ou des layout (le tout param etrable selon de multiples crit` eres : taille de l ecran, internationalisation...)
68 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Framework Applicatif

Mais aussi : Notication Manager permettant ` a chaque application dutiliser la barre de statut g en erale pour y int egrer ses propres informations. Activity Manager : composant qui g` ere le cycle de vie dune application et fournit les outils de navigation applicative.

69 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Applications

70 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Applications

2 parties :
Les activit es : des fen etres interactives Les services : t aches de fond.

Les applications tournent dans leurs SandBoxes Communications entre applications : Les intent Intent = intention : formule une demande Plusieurs composants peuvent r epondre ` a un intent .

71 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Applications
Derni` ere couche sur Android Plusieurs sont int egr ees dans le syst` eme : Ecran Home Gestion des Emails Gestion des SMS/MMS Gestion de la t el ephonie Google Maps... Application suppl ementaires installables Toutes les applications sont ecrites via le m eme SDK !

72 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

G en eralit es

Les applications sont ecrites en Java Le code compil e dex ainsi que les ressources (images, layout...) sont regroup es dans une archive au format apk par les outils du SDK Cette archive apk est un tout permettant la distribution et linstallation de lapplication sur nimporte quelle plateforme android.

73 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Ind ependance
Chaque application Android est isol e des autres ` a plusieurs niveaux :
- Chaque application tourne sur son propre process Linux. Ce processus est lanc e par Android d` es quune partie du code n ecessite une ex ecution et inversement tue les processus dont il na plus dutilit e. - De plus chaque process utilise sa propre machine virtuelle Dalvik. Ainsi chaque application poss` ede son propre environnement. - Chaque application est associ e` a un unique Linux User Id. Ainsi les chiers dune 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 eme user ID (et donc de partager des chiers nativement). Il est egalement possible donc dutiliser la m eme VM et le m eme processus Linux. 74 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Ind ependance
Un des aspect les plus important dAndroid est la r eutilisabilit e
- Chaque application peut utiliser des morceaux dautres applications (si elle le permettent) - Par exemple si votre application permet de retoucher des photos et que vous d esirez publier cette photo vous pouvez utiliser toutes les applications d ej` a pr esentes pour r ealiser cette t ache (facebook, picasa, mail ...). Et sans utiliser le code de cette application tierce juste en appeler la partie int eressante.

Ainsi le syst` eme doit etre capable :


- De lancer nimporte quelle partie expos ee dune application sans en lancer la totalit e - Donc les application Andoid nont pas de point dentr ee global (m ethode main()). Mais sont compos es d el ements ind ependants ou chacun peut etre lanc e individuellement.
75 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

ements Fondamentaux El

Activity Service BroadcastReceiver ContentProvider Intent

76 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Les Activity
Une activit e (Activity) = une IHM pour une action utilisateur pr ecise :
- Liste d el ements parmis lesquels lutilisateur peut choisir - Achage dune image avec un titre - Achage dun calendrier pour choisir une date

Exemple dune application de SMS :


- Une activit e pour choisir un contact - Une autre pour ecrire le message - Une autre pour acher un historique d echanges.

Chaque activit e est ind ependante des autres Une activit e doit h eriter de la classe : android.app.Activity

77 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Les Activity

Une application est donc un ensemble dactivit es On doit d enir quelle est la premi` ere activit e` a ex ecuter lors du lancement de lapplication Pour naviguer dans lapplication chaque activit e doit elle-m eme lancer lactivit e suivante.

78 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Les Activity

Chaque activit e est assign ee ` a une fen etre - Plein ecran - Fen etre ottante Une activit e peux aussi poss eder des sous fen etres - Pop-up ...

79 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Les Activity
Le rendu dune activit e est d enit par : Une ou un ensemble de vues Les vues h eritent de la classe android.view.View Chaque vue contr ole une zone rectangulaire de lactivit e Lorganisation est d enit par un arbre de Layout ou chaque feuille est une vue. Un grand nombre de vues standards sont propos ees (combobox, zone de texte, bouton...) Possibilit e de d enir des vues personnalis ees

80 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Les Activity

Les layouts :
- Agents de placement - Plusieurs layouts sont propos es en standard

Possibilit e de d enir ses propres Layout Les layout sont utilisable via des chier XML ou via le code Java

81 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Les Activity
Pour r esumer : Une fois larbre de vues d eni on utilise la m ethode suivante : - Activity.setContentView()

82 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Service

Un service ne poss` ede pas dinterface Tourne en arri` ere plan en continue (ou presque) Exemple :
Lecture de musique Collecte de donn ees achables dans une activit e Suivi GPS V erication de mise ` a jour ...

83 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Service

Lancement dune application musicale


D emarrage de lactivit e de choix de chanson Lutilisateur lance la musique Le service diuse cette musique Lutilisateur peut quitter l application en fermant lactivit e La musique continue ` a etre dius ee !

84 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Service

Pour communiquer avec un service il faut :


- Sy connecter (il se lance si il etait arret e) - Utiliser linterface que pr esente ce service - - Exemple : Play(), Pause(), next() ...

Un service sex ecute dans un Thread et donc ne bloque pas le reste du terminal quand il tourne en fond.

85 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Broadcast Receiver

Les broadcast receiver sont :


Des el ements inactifs qui attendent un ev` enement Il y a des ev` enements syst` eme : Batterie faible Changement de langue du syst` eme Lutilisateur a pris une photo ...

Il est possible de d enir ses propres ev` enements H eritent de la classe android.content.BroadcastReceiver

86 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Broadcast Receiver

Une application peux contenir plusieur receiver : un par ev` ement important Les receiver nont evidemment pas dinterface Ils peuvent lancer des activit es en cas de besoin Ils peuvent egalement utiliser le NoticationManager pour signaler quelque chose ` a lutilisateur (pr ef erable)
- Icone, vibration, alerte sonore, clignotement diode...

87 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Content Provider

Les content provider permettent de partager du contenu entre les applications Une application sen sert pour rendre public certaines de ses donn ees Le donn ees sont donc expos ees dans une classe h eritant de android.content.ContentProvider
Methode query() Insert() Update() delete()...

88 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Content Provider

Les autres applications nacc` edent pas directement ` a la classe de ContentProvider Utilisation dun ContentResolver qui va rediriger les requ etes vers le provider voulu Si lon tente dacc eder ` a une ressource dune application n etant pas en cours dex ecution le syst` eme Android se charge de la lancer avant.

89 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Intent

Les content providers sont activ es par une requ ete dun content resolver Mais les 3 autres systemes (Activity, Service, BroadCast Receiver) sont activ es par des messages asynchrone appel es Intent Un intent d erive de android.content.Intent Un intent poss` ede une action et un contenu particulier

90 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Intent

Pour les activit es et les services il nomme laction d esir ee et pr ecise lURI des donn ees sur lesquelles agir.
- Acher / image - Editer / texte - ...

Pour les broadcast receivers il se contente de nommer laction ` a annoncer


- Batterie faible - ...

91 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Intent
Les Intents et les activit es :
- Lancement en passant un Intent en param` etre ` a une des m ethodes suivantes :
* Context.startActivity() * Activity.startActivityForResult()

- Lactivity peut acc eder ` a celui ci avec :


* getIntent()

- Si le syst` eme doit envoyer des nouveaux intent :


* Appel de onNewIntent() sur lactivit e

- En cas de r esultat attendu


* Appel de onActivityResult() sur lactivit e appelante

92 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Intent

Les Intents et les services :


- Lancement en passant un Intent en param` etre ` a la m ethode suivante :
* Context.startService() * Le systeme applera ensuite la m ethode onStart() en pr ecisant cet Intent en param` etre

- Connexion en passant un Intent en param` etre ` a la m ethode suivante :


* Context.bindService() * Le Systeme appelera ensuite la m ethod onBind() en pr ecisant cet Intent en param` etre

93 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Intent

Les Intents et les Broadcast receiver :


- Une application voulant envoyer un ev` enement va utiliser une des m ethodes suivantes :
* Context.sendBroadcast() * Context.sendOrderedBroadcast() * Context.sendStickyBroadcast()

- Le syst` eme va alors appeler la m ethode onReceive() sur tous les broadcast receivers int eress es en passant en param` etre lIntent.

94 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Intent
La cat egorie
- Une chaine de caract` ere pr ecisant quel type de composant peut g erer lintent. - Plusieurs cat egories peuvent etre pr ecis ees. - Exemples :
* CATEGORY BROWSABLE : Le contenu peut etre ach e dans le navigateur * CATEGORY HOME : Lactivit e est de type Home * CATEGORY LAUNCHER : Lactivit e est lancable par le launcher et donc doit y etre pr esente * CATEGORY PREFERENCE : lactivit e est un panneau de pr ef erences

95 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Intent
Quelques exemples :
- ACTION VIEW content://contacts/people/1 Ache les information sur le contact 1 - ACTION DIAL content://contacts/people/1 Ache le mode dappel rempli avec les informations du contact 1 - ACTION VIEW tel:123 Ache le mode dappel rempli avec 123. (ACTION VIEW sadapte donc au contenu) - ACTION DIAL tel:123 Idem - ACTION EDIT content://contacts/people/1 Permet de modier les informations du contact 1 - ACTION VIEW content://contacts/people/ Ache la liste des contacts (le choix dun de ces contact g en erera un Intent pour acher ce contact)

96 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Manifest

Fichier XML Pr ecise larchitecture de lapplication Chaque application doit en avoir un AndroidManifest.xml ` a la racine du projet

97 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Manifest

Contenu :
- Pr ecise le nom du package java utilisant lapplication. Cela sert didentiant unique ! - Il d ecrit les composants de lapplication - - Liste des activit es, services, broadcast receivers - - Pr ecise les classes qui les impl ementent - - Pr ecise leurs capacit es (` a quels intents ils r eagissent) - - Ceci permet au syst` eme de savoir comment lancer chaque partie de lapplication an de satisfaire au principe de r eutilisabilit e.

98 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Manifest

Contenu suite :
D enit les permissions de lapplication Droit de passer des appels Droit dacc eder ` a Internet Droit dacc eder au GPS ... Pr ecise la version dAndroid minimum n ecessaire D eclare les librairies utilis ees D eclare des outils dInstrumentation (uniquement pour le d eveloppement)

99 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Manifest

Conventions :
- Seuls deux el ements sont obligatoire - - < manifest > : contient le package, la version... Englobe tout le chier - - < application > : d ecrit lapplication et contiendra la liste de ses composants. - Les donn ees sont pass ees en tant quattribut et non en tant que contenu - Tous les attributs commencent par android: (sauf quelques un dans < manifest >)

100 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Manifest

Les ressources
- Au lieu de contenir les donn ees en tant que tel le chier manifest peut faire appel ` a des ressources - < activityandroid : icon = @drawable /smallPic ... > - Ces ressources sont d enies dans le r epertoire res de lapplication.

101 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Manifest
Permissions
- Une application ne peux pas utiliser certaines fonctionnalit es sauf si il le pr ecise dans le chier Manifest - Il faut donc pr eciser les permissions n ecessaires grace ` a: < 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

Il est possible de d enir ses propres permissions

102 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Manifest
Intent Filter - Ils informent le syst` eme ` a quelle intent les composants peuvent r eagir - Un composant peut avoir plusieurs ltres - Editeur de texte - - Filtre pour editer un document existant - - Filtre pour initier un nouveau document - Un ltre doit poss eder une action qui d enit ` a quoi il correspond

103 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Manifest

Exemple

104 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Activity & Task

R esum e: - Lapplication A doit acher une carte - A pr epare lintent avec les donn ees n ecessaires - A appelle startActivity() avec cet intent - Le syst` eme trouve lapplication B qui sait g erer cet Intent - Lapplication B ache la carte - Lutilisateur ferme cette carte (bouton back) - Lapplication A reprends la main

105 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Activity & Task

Du point de vue de lutilisateur : - 1 seule application (A et B sont confondues) Du point de vue du syst` eme : - 2 applications - 2 DVM - 2 process - 1 T ache = 1 Application au sens utilisateur.

106 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Activity & Task


Une t ache : - Est une pile dactivit es - La premi` ere est celle qui a et e initi ee par lutilisateur - Les activit es peuvent provenir de di erentes applications - Lensemble forme un tout - - Mis en arri` ere plan en m eme temps - - Remise au premier plan dans son ensemble Comportement par d efaut modiable via le manifest et le tag < activity > et ses ags

107 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Processus & Threads


Quand le premier composant dune application n ecessite une ex ecution Android d emarre un nouveau processus Linux pour g erer ce composant Chaque composant peut pr eciser dans la Manifest (via lattribut process) si il doit sex ecuter dans un nouveau processus ou si il doit partager un processus existant Deux composant de deux applications peuvent aussi partager le m eme processus si : - Elle utilisent le m eme Linux User ID - Elles sont sign ees par la m eme autorit e

108 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Processus & Threads

Attentions pour les composant utilis e dans le m eme processus - Ne pas faire de longues op erations lors des appels par le Systeme ( View.onKeyDown() ) sinon cela bloquera tout le reste des composants. - Penser ` a utiliser des Threads pour les traitements longs. - Utiliser la classe classique Java de Threads - Android fournit aussi des classes utilitaires pour simplier lutilisation des Threads

109 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Cycle de Vie
Une activit e poss` ede trois etats : - Active (running) : Quand lactivit e est au premier plan et recoit les actions utilisateur. - Paused : Quand elle est toujours visible mais na pas le focus (autre activit e transparente par dessus ou activit e ne prenant pas tout l ecran) - - Toujours vivante - - Mais peut etre tu ee en cas de ressources tr` es limit ees - Stopped : Quand elle nest plus visible - - Toujours vivante - - Mais sera tu ee d` es que des ressources seront n ec essaires.
110 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Cycle de Vie

Le syst` eme tue les activit es en etat stopped (ou paused) de deux mani` eres : - En appelant la m ethode nish() - En tuant le processus tout simplement Quand lactivit e sera a nouveau demand ee : - Doit etre compl etement reconstruite - Doit Potentiellement recharger son dernier etat

111 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Cycle de Vie
Une activit e est noti ee de ses changement d etat par lappel ` a ses m ethodes : - void onCreate(Bundle savedInstanceState) - void onStart() - void onRestart() - void onResume() - void onPause() - void onStop() - void onDestroy()

112 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Cycle de Vie
An de sauvegarder le contexte le syst` eme appelle onSaveInstanceState() avant de rendre lapplication potentiellement tuable (paused...) Cet appel fournit un bundle cl e/valeurs pour que le d eveloppeur puisse sauvegarder l etat Au prochain appel de onCreate() ce bundle sera fournit Il est egalement fournit via un appel ` a onRestoreInstanceState() Lappel ` a la sauvegarde nest faite quen cas de risque de terminaison de lactivit e par le syst` eme et non si cela vient dune action utilisateur (back)
113 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Cycle de Vie

114 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Back Stack

115 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Hello World
Cr eer un nouveau projet :

116 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Hello World

Organisation des dossiers : src : sources gen : code g en er e res : ressources drawable : images layout : layout values : constantes Manifest

117 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Hello World

Manifest :

118 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Hello World
Ressources (Layout, String, Images) On y acc` ede par @dossier/nom ou R.dossier.nom Ressources alternatives : selon la langue, le sdk, lecran...

119 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Hello World

Ativity

120 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Hello World

Ex ecution de lapplication : Sur un emulateur Sur un terminal

121 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Une Approche Syst` eme

Ce texte reprend notamment un document de r ef erence (de mon point de vue) produit par Cyril Gaglio, dans le cadre du dispositif Ing enieur 2000. http://www-igm.univ-mlv.fr/~dr/ XPOSE2008/android/archi_linux.html

122 / 126

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Pr esentation

123 / 126

Android
Android ???
Android n'est pas un robot comme on pourrait le penser, c'est une plateforme complte pour appareil mobile (telephone, PDA, netbook, etc). Elle est compose d'un systme d'exploitation, de librairies "middleware", et d'un ensemble d'applications : un client mail, un navigateur, un calendrier, etc. Android est bas sur un kernel linux. Les librairies "middleware" qui le compose sont crite en C/C++. Le Framework est quant lui crit en java.

OHA
Android est dvelopp par l'OHA (Open Hanset Alliance), une alliance internationale de compagnie. Cette alliance se compose de compagnie ne faisant pas partie du mme secteur. Ainsi elle se compose : d'oprateur mobile (Vodafone, Teleponica, Telecom Italia, China Mobile, etc.) de fabricants de tlphone mobiles ( Asus, HTC, LG, Motorola, etc.) de fabricants de semi conducteur ( Intel, Nvidia, ARM, etc.) d'diteurs logiciels ( Ebay, Google, PacketVideo, etc.) de distributeurs (Aplix corporation, Borqs, TAT) Aujourd'hui il y a 1,5 milliards de tlvisions dans le monde. 1 milliard de personnes ont accs internet. Mais prs de 3 milliards de personnes ont un tlphone portable, ce qui fait que le tlphone portable est le produit connaissant le plus grand succs dans le monde. C'est pour cela que l'OHA s'est lance sur le secteur du mobile. Ils esprent fournir une plateforme mobile innovante et performante fournissant aux utilisateurs une nouvelle exprience d'utilisation de leur mobile.

Historique
En juillet 2005, Google a acquit Android, Inc., une petite startup qui dveloppait des applications pour tlphones mobiles .C'est ce moment l que des rumeurs sur l'entre de Google dans le secteur du mobile ont commenc. Mais personne n'tait sur, dans quels marchs ils allaient se positionner. Aprs ce rachat, Google, une quipe dirige par Andy Rubin, un ancien d'Android Inc, a commenc travailler sur un systme d'exploitation pour appareil mobile bas sur linux. Durant 2 ans, avant que l'OHA soit cre officiellement, un certain nombre de rumeurs ont circul au sujet de Google. Il a t dit que Google dveloppait des applications mobiles de son moteur de recherche, qu'ils dveloppaient un nouveau tlphone mobile, etc. En 2007, le 5 novembre, l'OHA a t officiellement annonce, ainsi que son but. Dvelopper des standards open source pour appareil mobile. Le premier standard annonc a t Android, une plateforme pour appareils mobiles base sur un kernel linux 2.6. En septembre 2008, la premire version stable du SDK est sortie, ce jour la dernire version est la 1.2.

Caractristiques
Framework Java pour le dveloppement d'application pour la plateforme Android Machine virtuelle spcialement dveloppe pour Android. Cette machine virtuelle permet d'excuter les applications java dveloppes avec le Framework. Navigateur web bas sur le moteur de rendu Webkit Librarie graphique 2D, librarie graphique 3D bas sur OpenGL ES 1.0. Acclration matriel possible. Base de donnes SQL : SQLite est utilis pour le stockage des donnes Android supporte les formats audio/video/image suivants : MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF gsm, edge, 3G, bluetooth, wifi Android est capable d'utiliser Camera, GPS, acclromtre Android possde un environnement de dveloppement complet contenant : un mulateur, un dbuggeur, un analyseur de mmoires et de performances et un plugin eclipse.

Framework

Machine virtuelle Dalvik

Navigateur web Graphique

Stockage Mdia Connectivit Support Matriel

environnement de dveloppement

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Architecture

124 / 126

Android
Architecture
L'image ci-dessous decrit l'architecture complte d'android :

Android est bas sur un kernel linux 2.6.xx, au dessus du kernel il y a "l'hardware abstraction layer" qui permet de sparer la plateforme logique du matriel. Au dessus de cette couche d'abstraction on retrouve les librairies C/C++ utilises par un certain nombre de composants du systme Android. Au dessus des librairies on retrouve l'Android Runtime, cette couche contient les librairies curs du Framework ainsi que la machine virtuelle excutant les applications. Au dessus la couche "Android Runtime" et des librairies curs on retrouve le Framework permettant au dveloppeur de crer des applications. Enfin au dessus du Framework il y a les applications.

Android
Linux
Kernel

Android est bas sur un kernel linux 2.6 mais ce n'est pas linux. Il ne possde pas de systme de fentrage natif (X window system), la glibc n'est pas support, Android utilise une libc customis appel Bionic libc. Enfin Android utilise un kernel avec diffrents patches pour la gestion de l'alimentation, le partage mmoire, etc. permettant une meilleurs gestion de ces caractristiques pour les appareils mobiles. Android n'est pas linux mais il est bas sur un kernel linux. Pourquoi sur un kernel linux ? Le kernel linux a un systme de gestion mmoire et de processus reconnu pour sa stabilit et ses performances. Le model de scurit utilis par linux, bas sur un systme de permission, connu pour tre robuste et performant. Il na pas chang depuis les annes 70 Le kernel linux fournit un systme de driver permettant un abstraction avec le matriel. Il permet galement le partage de librairies entre diffrent processus, le chargement et le dchargement de modules chaud. le kernel linux est entirement open source et il y a une communaut de dveloppeurs qui l'amliorrent et rajoute des drivers. C'est pour les points cits ci-dessus que l'quipe en charge du noyau a dcid d'utiliser un kernel linux.

Patches
Le kernel Android a t patchs avec diffrents patchs : Alarme Ce patch fournit un certain nombre de timeurs permettant par exemple de "rveiller l'appareil quand il est en veille"

Ashmem Ce patch permet aux applications de partager de la mmoire. Cette gestion est faite au niveau kernel du fait que le partage mmoire est trs utilis dans la plateforme Android car la mmoire dans les appareils mobiles est limite par rapport des PC. Le partage mmoire est essentiellement utilis par le Binder (lien).

Binder - Android IPC La communication interprocessus (IPC) peut entrainer des trous de scurit, c'est pour cela qu'Android son propre IPC, le Binder et que la communication interprocessus n'est pas laiss aux dveloppeurs d'application. De plus, avoir un systme IPC centralis permet une maintenance plus facile et une correction des problmes de scurits gnrales. Dans Android chaque application est lance dans un processus diffrent. Ces diffrents processus ont besoin de communiquer ensemble, de partager des donnes. Cet IPC est possible avec le Binder. Il permet plusieurs processus de partager des donnes, de communiquer entre eux en utilisant le partage mmoire (ashmem driver). Cette technique permet des performances accrue par rapports de la recopie en mmoire des donnes, ou de la srialisation. Les problmes de concurrence, lorsque plusieurs processus essaye d'accder en mme temps une "mme zone mmoire" (au mme objet java) sont grs par le Binder. Tous les appels sont synchroniss entre les processus.

Fonctionnement

L'application A rcupre une rfrence vers le Service B l'aide du Context Manager. Le Context Manager peut tre compar un DNS. Il permet de rcuprer l'aide d'un nom, une rfrence vers un objet java. Pour ceux qui connaissent RMI (Remote Method Invocation), c'est le registry. Si on veut partag des objets, il faut au pralable les enregistrer dans le Context Manager. Une fois la rfrence vers le service B rcupre, la mthode foo() du service B est appele par l'application A. Le binder intercepte cet appel, et l'aide d'un des threads libres prsent dans sa thread pool (piscine de thread ou rservoir de threads), il va excuter la mthode sur le service B.

Android
Librairies
Au dessus du kernel, il y a les librairies natives. Ces librairies sont crites en C/C++. Elles fournissent les fonctionnalits de bas niveau d'Android.

Bionic libc
Comme cela a t dit prcdemment, Android ne supporte pas la glibc, donc les ingnieurs d'Android ont dvelopp une librairie C (libc) nomm Bionic libc . Elle est optimise pour les appareils mobiles et a t dvelopp spcialement pour Android. Les ingnieurs d'Android ont dcid de dvelopper une libc propre la plateforme Android car ils avaient besoin d'une libc lgre (la libc sera charg dans chaque processus) et rapide (les appareils mobiles ne disposent de CPU puissant). La Bionic libc a t crit pour supporter les CPU ARM, bien que le support x86 est prsent. Il n'y pas de support pour les autres architecture CPU tel que PowerPC ou MIPS. Nanmoins, pour le march des appareils mobiles, seulement l'architecture ARM est importante. Cette libc est sous licence BSD, elle reprend une grande partie du code des glibc issue d'OpenBSD, FreeBSD et NetBSD. Caractristique importante : Elle pse environ 200Ko soit la moiti de la glibc L'implmentation des pthreads (POSIX thread) a t compltement rcrit pour supporter les threads de la machine virtuelle Dalvik. De ce fait la Bionic libc ne supporte les threads POSIX Les exceptions C++ et les "wide char" ne sont pas supports Il n'y a pas de "Standard Template Library" (STI)

WebKit
Le navigateur web prsent dans Android est bas sur le moteur de rendu sous licence BSD WebKit. WebKit est moteur de rendu, qui fournit une "fondation" sur lequel on peut dvelopper un navigateur web. Il a t originellement driv par Apple du moteur de rendu KHTML pour tre utilis par la navigateur web Safari et maintenant il est dvelopp par KDE project, Apple, Nokia, Google et d'autres. WebKit est compos de deux librairies : WebCore et JavascriptCore qui sont disponible sous licence GPL. WebKit supporte le CSS, Javascript, DOM, AJAX. La dernire version obtenu 100% au test Acid 3. La version de WebKit prsent dans Android t lgrement modifie pour s'adapter aux appareils mobiles. Ainsi le moteur de rendu bas sur WebKit prsent dans Android supporte l'affichage sur une colonne.

Media Framework
La librairie Media Framework est base sur OpenCore de PacketVideo. Elle permet le support des standards audio/vido/images. Le schema ci dessous decrit toutes les fonctionnalites fournit par cette librarie :

Surface et Audio Flinger

Le Surface Flinger permet de construire le rendu graphique, il manipule toutes les surfaces afficher provenant du frame buffer. Il peut combiner de la 2D et de la 3D provenant de diffrentes applications. Les surfaces afficher sont passes par buffers via le Binder. Le surface flinger utilise un double buffer permettant de basculer d'une surfaces une autres rapidement. Ce double buffer permet galement de ne jamais afficher des surfaces incompltes, car le deuxime buffer n'est affich que lorsque celui est complet. Les deux buffers sont utiliss tour tour. Il peut utiliser OpenGL ES et l'acclration matrielle pour le rendu 2D en utilisant l'API khronos.

L'audio flinger gre tous priphriques audio. Il traite les flux audio et les route vers les priphriques de sortie (haut parleur, Bluetooth, casque).

Android
Hardware Abstraction Layer

Cette couche se situe entre les librairies et le kernel linux, elle fournit les interfaces que doivent implmenter les drivers kernel. Cette couche spare la plateforme logique des interfaces matrielles. Le but de cette couche est de faciliter le portage des librairies sur diffrents matriels. Les ingnieurs d'Android ont dcid de faire cette couche car : pas tous les drivers kernel nont des interfaces standardises. les drivers kernel sont sous licence GPL ce qui exposerait les interfaces propritaires des fabricants. Les fabricants veulent pouvoir garder ces interfaces en "closed source" Android a des besoins spcifiques pour les drivers kernel.

Android
Android Runtime
Cette couche se situe au dessus des libraires C/C++, elle se compose du "cur" du Framework et de la machine virtuel dalvik.

Dalvik
La machine virtuelle Dalvik est base sur une architecture de registre l'instar de beaucoup de machine virtuel et de la machine virtuel Java qui ont une architecture de pile. Utilis une architecture de pile ou de registre dpends des stratgies de compilation et d'interprtation choisit. Gnralement, les machines bases sur une architecture de pile, doivent utiliser des instructions pour charger les donnes sur la pile et manipuler ces donnes. Ce qui rajoute des instructions dans le code machine, et donc il y a plus de code que pour une machine bas sur une architecture de registre. Cependant, les instructions pour une machine bas sur une architecture de registre doivent tre encod pour les registres sources et destinations, ce qui prend galement de la place dans le code machine rsultant. La diffrence est essentiellement importante suivant l'interprteur de code machine prsent dans la VM.

Les applications Java dveloppes pour Android doivent tre compiles au format dalvik excutable (.dex) avec l'outil dx. Cet outil compile les .java en .class et ensuite il convertit ces .class en .dex. Un .dex peut contenir plusieurs classes. Les strings dupliques et autre constantes utilises dans de multiples classes sont regroupes dans un .dex. Le bytecode utilis dans les .dex est le Dalvik bytecode et non le java Bytecode.

Pour comparaison un .dex dcompress est un peu plus petit en taille qu'un .jar compress driv des mme fichiers .class.

Etant optimis pour utiliser une quantit de mmoire minimale, la VM Dalvik a quelques caractristiques spcifiques par rapport aux autres VM: la VM a t "dgraisse" pour utiliser moins d'espace mmoire pas compilation la vol (JIT) Elle utilise sont propre bytecode et pas le Java bytecode La table des constantes a t modifi pour n'utiliser que des indexes de 32 bit afin de simplifier l'interprteur.

Core Libraries
Les libraries Core fournissent le langage Java disponible pour les applications. Le langage Java founit avec Android reprend en grande partie l'API JSE 1.5. Il y a des choses qui ont t mis de cot

car cela n'avait pas de sens pour Android ( comme les imprimantes, swing, etc.) et d'autres par ce que des APIs spcifiques sont requises pour Android. Packages JSE 1.5 supports par Android : java.io java.lang (sauf java.lang.management) support java.math java.net java.nio java.security java.sql java.text java.util javax.crypto javax.net javax.security (sauf javax.security.auth.kerberos, javax.security.sasl) javax.sound javax.sql (sauf javax.sql.rowset) javax.xml.parsers org.w3c.dom org.xml.sax Packages JSE 1.5 non supports par Android : java.applet java.awt java.beans java.lang.management java.rmi javax.accessibility javax.activity javax.imageio javax.management javax.naming javax.print javax.rmi javax.security.auth.kerberos javax.security.auth.spi javax.security.sasl javax.swing javax.transaction javax.xml (sauf javax.xml.parsers) org.ietf.* org.omg.* org.w3c.dom.* Librairies spcifiques ajoutes dans les Core Libraries d'Android : org.apache.commons.codec org.apache.commons.httpclient org.bluez org.json

javax.security.auth.spi,

and

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

FrameWork

125 / 126

Android
Framework
Le framework est situ au dessus de l'Android Runtime et des librairies. Il fournit des API permettant aux dveloppeurs de crer des applications riches.

Core Plateform Services


Android introduit la notion de services. Un service est une application qui n'a aucune interaction avec l'utilisateur et qui tourne en arrire plan pendant un temps indfini. Les services curs de la plateforme (Core Plateform Services) fournissent des services essentiels au fonctionnement de la plateforme : Activity Manager : gre le cycle de vie des applications et maintient une "pile de navigation" (navigation backstack) permettant d'aller d'une application une autre et de revenir la prcdente quand la dernire application ouverte est ferme. Package Manager : utiliser par l'Activity Manager pour charger les informations provenant des fichiers .apk (android packaga file) Window Manager : juste au dessus du Surface Flinger (lien), il gre les fentres des applications --> quelle fentre doit tre afficher devant une autre l'cran. Resouce Manage : gre tous ce qui n'est pas du code, toutes les ressources --> images, fichier audio, etc. Content Provider : gre le partage de donnes entre applications, comme par exemple la base de donnes de contact, qui peut tre consulte par d'autres applications que l'application Contact. Les Donnes peuvent partager travers une base de donnes (SQLite), des fichiers, le rseau, etc. View System : fournit tous les composants graphiques : listes, grille, text box, buttons et mme un navigateur web embarqu.

Hardware Services
Les services matriels (Hardware Services) founissent un accs vers les API matrielles de bas niveau : Telephony Service : permet d'accder aux interfaces "tlphonique" (gsm, 3G, etc.) Location Service : permet d'accder au GPS. Bluetooth Service : permet d'accder l'interface bluetooth. WiFi Service : permet d'accder l'interface Wifi. USB Service : permet d'accder aux interfaces USB. Sensor Service : permet d'accder aux dtecteurs (dtecteurs de luminosit, etc.)

Android
Framework
Le framework est situ au dessus de l'Android Runtime et des librairies. Il fournit des API permettant aux dveloppeurs de crer des applications riches.

Core Plateform Services


Android introduit la notion de services. Un service est une application qui n'a aucune interaction avec l'utilisateur et qui tourne en arrire plan pendant un temps indfini. Les services curs de la plateforme (Core Plateform Services) fournissent des services essentiels au fonctionnement de la plateforme : Activity Manager : gre le cycle de vie des applications et maintient une "pile de navigation" (navigation backstack) permettant d'aller d'une application une autre et de revenir la prcdente quand la dernire application ouverte est ferme. Package Manager : utiliser par l'Activity Manager pour charger les informations provenant des fichiers .apk (android packaga file) Window Manager : juste au dessus du Surface Flinger (lien), il gre les fentres des applications --> quelle fentre doit tre afficher devant une autre l'cran. Resouce Manage : gre tous ce qui n'est pas du code, toutes les ressources --> images, fichier audio, etc. Content Provider : gre le partage de donnes entre applications, comme par exemple la base de donnes de contact, qui peut tre consulte par d'autres applications que l'application Contact. Les Donnes peuvent partager travers une base de donnes (SQLite), des fichiers, le rseau, etc. View System : fournit tous les composants graphiques : listes, grille, text box, buttons et mme un navigateur web embarqu.

Hardware Services
Les services matriels (Hardware Services) founissent un accs vers les API matrielles de bas niveau : Telephony Service : permet d'accder aux interfaces "tlphonique" (gsm, 3G, etc.) Location Service : permet d'accder au GPS. Bluetooth Service : permet d'accder l'interface bluetooth. WiFi Service : permet d'accder l'interface Wifi. USB Service : permet d'accder aux interfaces USB. Sensor Service : permet d'accder aux dtecteurs (dtecteurs de luminosit, etc.)

Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme

Fonctionnement

126 / 126

Android
Fonctionnement
Dmarrage

Comme tout systme Linux, au dmarrage le bootLoader charge le kernel et lance le processus init. Le pre de tous les processus.

Ensuite un certain nombre de daemons sont lancs : USB daemon (usbd) Android Debug Bridge (adbd) Debugger Daemon (debuggerd); Il permet de grer les requtes de debug de processus (dump memory, etc.) Radio Interface Layer Daemon (rild)

Puis le processus init lance le processus zygote. Le processus zygote est le service le plus important. Le processus zygote : initialise une instance de Dalvik VM Pr charge les classes et coute sur une socket pour crer des Dalvik VM Fork sur demande pour crer des instances de Dalvik VM pour chaque application

Les VM cres partagent des zones mmoire communes ce qui permet de minimiser la mmoire utilises Chaque VM crer par zygote est un fork d'une VM "mre", ce qui permet d'acclrer le dmarrage d'une application.

Ensuite le processus init lance le processus runtime qui va son tour lancer le Service Manager ( "DNS" permettant d'enregistrer et de rcuprer des rfrences vers des services) et enregistre ce Service Manager comme le Context Manager par dfaut.

Une fois tous cela de fait, le processus runtime, envoie une requte au processus zygote lui demandant de lancer le System Service. Zygote va forker une nouvelle instance de Dalvik VM pour le processus System Service et dmarrer le service. Le System service va lancer son tour l'Audio Flinger et le surface Flinger qui vont ensuite s'enregistrer au prs du Service Manager

Le System Manager lance ensuite les services d'Android. Ces services une fois lancs vont s'enregistrer au prs du Service Manager (en bleu), qui fait office de proxy avec le Service Manager (en vert) faisant partie des librairies C/C++.

Une fois tous les services chargs, le systme est prt. Des applications utilisateur peuvent tre lances.

Intraction

L'application utilisateur rcupre Location Manager Service en utilisant le Context Manager. Ensuite le Location Manager interroge le GpsLocationProvider qui lui mme interroge en utilisant JNI (Java Native Interface) la librairie C/C++ GpsLocationProvider qui va charger la librairie dynamique libgps.so.

Das könnte Ihnen auch gefallen