Vous êtes sur la page 1sur 24

android

android
Hicham Bensaid

android Aperu Aperu

Aperu d'android
Plateforme open source complte conue pour les terminaux mobiles:
Complte Open Source Conue pour terminaux mobiles:

limites. Chef de le Google Proprit du Open Handset Alliance

android

Batterie, ressources

Objectif:  accelerate innovation in mobile and oer consumers a richer, less expensive, and better mobile experience.

android Aperu Histoire

Histoire
2005, Google achte Android, Inc. 2007, Open Handset Alliance annonce. Android est ociellement open source 2008, Android SDK 1.0 sortie. Le tlphone G1, fabriqu par HTC et vendu par T-Mobile USA, suit rapidement aprs. 2009, prolifration de terminaux Android. Nouvelles versions de l'OS sorties: Cupcake (1.5), Donut (1.6), and Eclair (2.0 and 2.1). Plus de 20 terminaux sous Android. 2010, Android juste derrire Blackberry comme 'best-selling smart phone platform'. Froyo (Android 2.2) sortie et plus de 60 terminaux

android Aperu Histoire

Versions X.Y.Z + nom d'un gteau


Android version Android 1.0 Android 1.1 Android 1.5 Android 1.6 Android 2.0 Android 2.0.1 Android 2.1 Android 2.2 Android 2.3 Android 2.3.3 Android 3.0 Android 3.1 Android 3.2 Android 4.0 API level 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Cupcake Donut Eclair Eclair Eclair Froyo (frozen yogurt) Gingerbread Gingerbread Honeycomb Honeycomb Honeycomb Ice Cream Sandwich Nickname

android Aperu Histoire

Rpartition des versions en janvier 2011

Upgrade (automatique) possible de 1.0, 1.1 vers 1.5 Upgrade impossible entre 1.5,1.6 et 2.0 Versions 1.6 ou 2.0 comme version minimum de dveloppement

android La pile android

Aperu de la pile

source: http://developer.android.com/guide/basics/what-is-android.html

android La pile android

Linux

Portabilit Scurit: Chaque application android tourne sur un process propre + mcanismes de scurit de Linux Fonctionnalits: Gestion de la mmoire, rseaux, gestion de la batterie, pilotes de priphriques, accs aux ressources, . . . Pilotes de priphriques: achage, camra, clavier, wi, mmoire ash, audio, IPC, . . .

android La pile android

Dalvik
Machine virtuelle conue exclusivement pour android, dveloppe par Google (Dalvik une ville en Iceland) 2 contraites: dure de la batterie + puissance de calcul

android La pile android

Dalvic (suite)
2 raisons majeures: Byte code stable mais langage (java) changeant Les APIs java de Android ressemblent java standard mais pas de AWT/Swing : API IHM propre android. Plusieurs chiers .class un chier .dex
Rutilisation de l'information redondante (entre classes)

Rduction la taille (environ de moiti)

Rglage n du ramasse miette, pas de JIT avant 2.3, JIT ajout partir de 2.3 performances (de 2 5 fois pour certaines applications et 10 20 % en moyenne) Gnration de code base de registre au lieu de la pile 30% d'instructions. Souci d'optimisation mme pour la SDK (chiers XML compils)

android La pile android

Bibliothques natives
crites en C/C++, entre autres: Webkit: moteur d'achage web rapide utilis par Safari et Chrome, FreeType: support des polices SQLite: BD SQL complte OpenGL (ES): bibliothque graphique 3D OpenSSL Librairies Media fondes sur OpenCore (www.packetvideo.com)
lecture et enregistrement audio/video

Librairie Surface Manager: contrle l'accs l'achage (supporte 2D et 3D) ...

android La pile android

Bibliothques natives (suite)

Bionic: rcriture de la libc


taille rduite de moti environ Oriente vers des terminaux aliments par batterie Problmes de licence

android La pile android

Application Framework
Environnement riche orant des services au dveloppeur Partie la mieux documente et la plus couverte de la plateforme Couche qui permet de faire les dveloppements APIs java ddies android + services (ou managers) qui tendent les possibilits
Localisation, censors, wi, tlphonie, fournisseurs de contenu (donnes), gestionnaire de paquetages (scurit, installation, ...) ...

Chaque application tourne sur sa propre instance de VM

android La pile android

Applications
Pr-installes ou tlcharges une application est un chier APK (archive) qui contient essentiellement 3 choses:
Executable Dalvik: Code java compil pour excution Resources: tout ce qui n'est pas code: images, audio, vido, chiers XML (layouts, langues, ...) Bibliothques natives: i.e. en C/C++

Necessit de signer une application avant de l'installer


Pour les besoins de dveloppement, une cl de dbogage

Distribution: Plusieurs stores (Android market par exemple) + possibilit de tlchargement depuis navigateur
Installation automatique du chier .apk

android Principales briques

Principales briques

Vues (Views) Activits (Activities) Intents (Intents) Fournisseurs de contenu (Content Providers) Services (Services) Recepteurs de diusion (Broadcast Receivers)

android Principales briques

Vue

Plus petite brique UI Boutton, label, champ de texte, . . . Peut agir comme container de vues
Hierarchie de vues Tout ce qu'on voit sur un cran

android Principales briques

Activit
Concept pour l'interface utilisateur Reprsente en gnral un seul cran de l'application Permet l'utilisateur de faire une tche:
i.e. acher ou crer ou diter des donnes

En gnral une application android contient plusieurs activits Navigation entre activits Pour chaque application il y'a une activit principale qui s'ache en premier

android Principales briques

Cycle de vie d'une activit


Lancement coteux d'une activit
Cration d'un nouveau processus linux Allocation mmoire des objets UI Extraction et cration des objets depuis les chiers XML Mise en oeuvre de l'cran entier

Quand l'utilisateur quitte l'cran il n'est pas dtruit Gestionnaire d'activits pour grer le cycle de vie: cration, destruction, gestion Programmation par rponse aux changements d'tat
environnement gr fond sur un container (comme pour les servlets i.e.) On programme ce qui se passe lors des transitions entre tats

android Principales briques

Cycle de vie d'une activit

android Principales briques

Intent
Reprsente de manire gnrique une intention de faire un travail Encapsule plusieurs concepts On peut utiliser un intent pour:
diuser un message dmarrer un service lancer une activit acher une page web ou une liste de contacts composr un N de tlphone ou rpondre un appel tlphonique

Les intents ne sont pas toujours initis par l'application (envoys par le systme pour notier l'application) Intents implicites ou explicites couplage faible entre l'action et le traitement

android Principales briques

Intent

android Principales briques

Fournisseur de contenu
Mcanisme pour le partage de contenu (persistent) entre les applications (i.e. liste des contacts) Masque la structure, le stockage et implmentation sous-jacents Utilisation du principe CRUD Interfaces avec les mthodes insert(), update(), delete() et query() Contacts Provider, Settings Provider, Media Store, . . .

android Principales briques

Fournisseur de contenu
Sparation Application (UI) / Donnes L'application des contacts ne contient pas de donnes Le fournisseur de contenu n'a pas d'interface graphique

android Principales briques

Services
Tournent en arrire-plan, pas d'interface graphique Peuvent faire les mme actions que les activits (sans UI) Utiles pour des actions qui durent longtemps indpendemment de l'cran Cycle de vie plus simple, plutt controll par le programmeur
Faire attention ne pas gaspiller les ressources

android Principales briques

Recepteurs de diusion

Implmentation du systme publication / abonnement (patron Observateur) Un recepteur est un code dormant qui est activ quand un vnement pour lequel il est abonn survient Le systme envoie des vnements tout le temps: SMS qui arrive, Batterie faible, dmarrage du systme, . . . Une application peut galement envoyer des vnements