Академический Документы
Профессиональный Документы
Культура Документы
android
Hicham Bensaid
Aperu d'android
Plateforme open source complte conue pour les terminaux mobiles:
Complte Open Source Conue pour terminaux mobiles:
android
Batterie, ressources
Objectif: accelerate innovation in mobile and oer consumers a richer, less expensive, and better mobile experience.
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
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
Aperu de la pile
source: http://developer.android.com/guide/basics/what-is-android.html
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, . . .
Dalvik
Machine virtuelle conue exclusivement pour android, dveloppe par Google (Dalvik une ville en Iceland) 2 contraites: dure de la batterie + puissance de calcul
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)
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)
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
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, ...) ...
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++
Distribution: Plusieurs stores (Android market par exemple) + possibilit de tlchargement depuis navigateur
Installation automatique du chier .apk
Principales briques
Vues (Views) Activits (Activities) Intents (Intents) Fournisseurs de contenu (Content Providers) Services (Services) Recepteurs de diusion (Broadcast Receivers)
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
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
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
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
Intent
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, . . .
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
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
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