Beruflich Dokumente
Kultur Dokumente
Cours Android
D eveloppement et API Romain Raveaux1
1 Laboratoire
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
7 / 126
Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme
Les r` egles
7 / 126
Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme
L evaluation
8 / 126
Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme
L evaluation
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
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
28 / 126
Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme
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
30 / 126
Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme
31 / 126
Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme
32 / 126
Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme
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 : 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
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
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....
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
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
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
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
53 / 126
Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme
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
Deux passages :
.JAVA vers .CLASS Concat enation des .CLASS en .DEX
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
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
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.
Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme
ements Fondamentaux El
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
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
84 / 126
Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme
Service
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
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 - ...
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()
92 / 126
Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme
Intent
93 / 126
Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme
Intent
- 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
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
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
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
107 / 126
Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme
108 / 126
Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications Une Approche Syst` eme
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
121 / 126
Organisation du module G en eralit e Le Syst` eme Fonctionnement des Applications 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
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 :
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.
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.
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.