Organisation du module: Développement Mobile et Android

Page 1 sur 122Lecteur de document UniversityLib

Organisation du module: Développement Mobile et Android

Mobile Application Development, Android System Architecture · lab

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Cours Android

Développement et API

1 / 125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Sommaire

1 Organisation du module

2 Généralité

3 Le Système

4

Fonctionnement des Applications

5 Une Approche Système

2 / 125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Développement Mobile

Développement Android

Développement Android

Développement web sur mobile

Développement Android :

Architecture

Bibliothèques Natives

Runtime

HAL

Développement web sur mobile : Alexandre Lissy (2h CM, 10h

TP)

HTML5, CSS, JavaScript

PhoneGap

Titanium

4 / 125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Développement Mobile

Développement Android

Généralité Android

Organisation du système

Android SDK

Application

Architecture Android

Architecture

Bibliothèques Natives

Runtime

HAL

5 / 125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Plan des TPs

Projet : Google Maps API (Géo-localisation)

Projets : Géolocalisation des Bus

7 / 125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Bibliographie

Cours de Romain Raveaux Mars 06-03, 2012 Laboratoire LI –

Polytech’Tours romain.raveaux at univ-tours.fr

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

10 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Présentation Générale

11 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Qu’est-ce que c’est ?

Souvent présenté comme l’alternative de Google à l’iPhone

Système d’exploitation pour terminaux mobiles

Basé sur Linux

Open Source (licence Apache)

12 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Fonctionnalités 1/2

Framework applicatif avec réutilisation et remplacement

possible des composants

DVM : Dalvik Virtual Machine (machine virtuelle optimisée

pour les périphériques mobiles)

Navigateur intégré basé sur le moteur WebKit (OpenSource)

Librairie 2D dédiée

Gestion de la 3D basée sur une implémentation d’OpenGL ES

1.0 (avec support de l’accelération matérielle)

Base de données SQLite

Gestion des écrans tactiles et du Multitouch

SDK 5.0 ART à la place de DVM

13 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Fonctionnalités 2/2

Multimédia : support de la plupart des formats classiques

d’images, de videos et audios (MPEG4, H.264, MP3, AAC,

AMR, JPG, PNG, GIF)

Téléphonie GSM (selon hardware)

Bluetooth, EDGE, 3G et WiFi (selon hardware)

Caméra, GPS, compas et acceléromètre (selon hardware)

Environnement de développement riche incluant :

Un émulateur (avec une interface de controle)

Des outils de deboggage

Outils de profiling mémoire et performance

Un plugin pour l’IDE Eclipse

-

-

-

-

14 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Historique

Développé par la startup Android Inc.

Juillet 2005 : Rachat par Google

Novembre 2007 : Open Handset Alliance

  • Texas Instruments, Broadcom Corporation, Google, HTC,

Intel, LG, Marvell Technology Group, Motorola, Nvidia,

Qualcomm, Samsung Electronics, Sprint Nextel, T-Mobile

Décembre 2008 : ARM Holdings, Atheros Communications,

Asustek Computer Inc, Garmin Ltd, Softbank, Sony Ericsson,

Toshiba Corp, Vodafone

-

15 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Terminaux Visés

Téléphones portables (HTC, Samsung, Motorola...)

Netbook/Smartbook (HP Airlife 100, Acer Aspire D250...)

Tablette Multimedia (Archos, Samsung Galaxy Tab, ...)

Automobile (Continental AutoLinq : Tesla, Ford...)

Mais aussi : GPS, Réfrigerateur, Machine à laver...

16 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Et ça ressemble à quoi ?

17 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Mobiles Disponibles

En 2008 : HTC Dream / G1

18 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Mobiles Disponibles

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

19 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Mobiles Disponibles

En 2010 : De très nombreux mobiles

20 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Concurrents

Apple iPhone OS : un des leaders en téléphonie, fermé...

Windows Phone 7 : En progression avec la chute de windows

mobile 6, fermé...

Palm : précurseur, en perte de vitesse, PalmPré ?

Blackberry : plutot dédié entreprise mais se démocratise

Symbian : passage en open source octobre 2009

Mais la plupart de ses concurrents n’ont pas la flexibilité d’Android

qui ne se destine pas qu’aux téléphones mobiles !

21 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Parts de Marché

22 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Les versions...

Versions d’Android :

1.0 : Apple Pie (sept 2008)

1.1 : Banana Split (fev 2009)

1.5 : Cupcake (avril 2009)

Publicité

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évrier 2011)

4.0 : Ice Cream Sandwich (ICS) (Décembre 2011)

4.1 : Jelly Bean (Juillet 2012)

4.4 : KitKat (sept 2013)

5.0 : Lollipop (juin 2014)...9.0 (2019)

Remarques :

E´volution très rapide !

Problématique de déploiement

23 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Cupcake 1.5

30 Avril 2009

Linux Kernel 2.6.27

Possibilité d’enregistrer et de

regarder des vidéos

Upload de vidéos vers Youtube et

d’images vers picasa directement

depuis le téléphone

Un nouveau clavier avec saisie

prédictive

Support du Bluetooth A2DP et

AVRCP

Possibilité de se connecter

à un kit

automatiquement

bluetooth

Ajouts de widget

Ajout des dossiers sur le Home

Transition d’écrans animées

24 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Donut 1.6

15 Septembre 2009

Linux Kernel 2.6.29

Nouvelle version du market

Refonte de la camera et de la

galerie (suppression multiple...)

Mise à jour de la recherche

vocale. Réponses plus rapides et

meilleure intégration (appel de

contacts..)

Amélioration des recherches pour

intégrer les bookmarks, l’historique,

les contacts et le web depuis l’écran

de démarrage

Support de nouveaux protocoles

de communication

Support des écrans en WVGA

Amélioration des performances

Framework ”Gesture” disponible

Navigation Google Gratuite

25 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Eclair 2.1

26 Octobre 2009

Linux Kernel 2.6.29

Optimisation des performance

Support des écrans de taille et de

résolution di↵érentes

Interface revue

Nouvelle interface pour le

navigateur et support d’ HTML5

Nouvelle liste des contacts

Intégration de Google Maps 3.1.2

Support de Microsoft Exchange

Support du flash intégré pour

l’appareil photo

Zoom digital

Amélioration du Multitouch

Amélioration du clavier virtuel

Bluetooth 2.1

Live Wallpapers

26 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Froyo 2.2

20 Mai 2010

Linux Kernel 2.6.32

Amélioration générale de l’OS

(vitesse, memoire...)

Mise en place de JIT

Integration du moteur JavaScript

V8 de chrome dans le navigateur

Amelioration du support de

Microsoft Exchange

Mise à jour du ”Launcher”

Support du Hotspot Wi-Fi

Mise a jour du Market et mise a

jour automatiques

Passage rapide d’un clavier d’une

langue à une autre

27 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Gingerbread 2.3

Novembre 2010

Linux Kernel 2.6.xxx

Support des technologies NFC

(Near Field Communication)

Client SIP améioré

28 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

HoneyComb 3.0

Février 2011

Orienté Tablette

Prise en charge du multi-coeurs

29 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Ice Cream Sandwich

Déblocage par reconnaissance de

visage.

Amélioration de la navigation

internet avec le navigateur

Chrome.

Non support du flash.

Gestion des form factory sans

touches tactiles.

30 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Répartition des Versions

Au 1er Juin 2014

31 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Evolution des écrans

Au 1er Novembre 2010

32 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Répartition des écrans

Au 1er Novembre 2010

33 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

La fragmentation

Complainte : La plate-forme n’oblige-t-elle pas à :

Faire la part belle au plus petit dénominateur commun. A

utiliser d’anciens SDK ou des API archa¨ıques pour fonctionner

sur le plus grand nombre d’appareils.

S’arracher les cheveux pour le design et les tests avec une

centaine de tailles d’écrans, de versions de système, de

caractéristiques matérielles ou de modes de saisie.

Une audience réduite pour son application, parce que seul un

faible pourcentage d’utilisateurs Android aura acces a certains

applications, sur certaines appareils.

Les choses ont changé

La fragmentation, elle, n’est plus qu’un mythe.

Depuis 2012, Google a fait d’énormes progrès. Certes, un large

pourcentage d’utilisateurs ne bénéficie toujours de la dernière

édition du système, la version 4.4 Kitkat.

Alors que plus de 90% des utilisateurs iOS profitent, au

quotidien, de la derniere version du systeme (iOS 7).

34 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

La fragmentation

Les choses ont changé

La part d’installation des services Google Play, bien plus

pertinente

Car ces services téléchargent en tâche de fond les composants

nécessaires pour faire tourner les applications Android.

Or 93 % des utilisateurs Android utilisent la dernière version

des Services Google Play.

Google bascule doucement des composants clés d’Android, des

API et des éléments applicatifs du cœur du système vers les

services Google Play.

La version 5.0 de ces services est actuellement en cours de

déploiement sur tous les appareils Android, de la version 2.3

Gingerbread à la version 4.4 Kitkat.

35 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Android Market (Play Store)

Système standard de téléchargement d’applications

Pas de vérifications des applications

Navigation laborieuse :

Par catégorie

Recherche par mots clés

Par gratuit / payant

Classement enfant, adolescent, adulte...

Nécessite un terminal certifié (camera, 3G, compas...)

Gestion des autorisations avant l’installation

Possibilité de rendre payant les app.

Publicité

Des centaines de milliers d’app.

36 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Android Market

25$ pour s’inscrire en tant que developpeur

70% du prix revient au developpeur, 30% a Google

Revenus via Google CheckOut (Google Wallet)

Achat & vente possible selon les pays

57% d’applications gratuites

App Store : 28%

Idem Blackberry App World, Nokia Ovi Store...

37 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Markets Alternatifs

AppsLib (Archos) : http://appslib.com

AndroLib : http://www.androlib.com

Market Samsung

...

Tout a fait autorisé par Google

Libre de fonctionnement

Accessible aux terminaux non certifiés

38 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Sans Market

Via les outils du SDK

Via des applications disponibles sur le market et la carte SD

39 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Environnement de développement

Outils :

IDE: Android Studio / Eclipse

SDK Android

ADT : Android Development Tools (plugin eclipse)

AVD : Android Virtual Device

ADB : Android Debug Bridge

40 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Android n’est pas Linux

Android : un système basé sur Linux ...

mais avec tellement de modifications - - > pas considérer

comme un système Linux

Android n’est pas un OS GNU/Linux

Rumeur : Linux 3.3 et Android : début de fusion du noyau

41 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Linux sur périphériques mobiles ?

GNU/Linux ne convient pas aux appareils mobiles

Google a donc modifié le noyau Linux

Android est open source.

42 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Android taillé pour l’embarqué

Périphériques avec peu de ressources

Périphériques avec des ressources di↵érentes

Périphériques avec une utilisation bornée

Smart Phone, lecteur de salon, auto-radio....

AOSP (Android Open Source Project)

Licence Apache

43 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Android un système ouvert ?

+++ Des applications tierces peuvent comuniquer entre elles

— Google play services en dehors du projet open-source

AOSP.

— Android Open Source Project (AOSP) est il socle su sant

pour utiliser un appareil sous Android sans les services Google.

Note : Evidemment, le contenu de ces diapos représente une

prise de parole individuelle.

44 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Architecture Générale

45 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Architecture Générale

5 couches : noyau, bibliothèques natives, runtime, framework,

application

46 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Noyau

Noyau Linux 2.6 (mais modifié)

Choisi pour sa stabilité, sa maturité et l’ouverture du code

Principal Changement : Suppression des IPC SysV remplacer

par Binder

Binder proche de CORBA.

E´conomique en ressource dédié aux architectures qui reposent

pas activement sur la gestion de processus.

Gestion de la mémoire di↵érente. SHM POSIX mais simplifié.

Partage de mémoire entre processus via Binder

Systeme embarqué oblige l’acces aux journaux ne peut pas se

faire via /var/log/*

Intégration d’un logger

47 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Noyau

En standard par de fonction pour terminer l’application

Viking Killer (Out Of Memory Management)

Pour tâche de tuer processus quand la mémoire vient à

manquer

48 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Noyau Linux

49 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Noyau Linux

Android repose sur un noyau Linux version 2.6

Gestion de la securité

Gestion de la mémoire

Gestion des processus

Gestion réseau

Drivers

...

Ce noyaux agit comme une couche d’abstraction entre le

matériel et le restes des couches applicatives.

50 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Compatibilité Linux

Noyau dérivé de Linux mais a été modifié par Google :

Pas de système X-Window nativement

Ne supporte pas toutes les libraires GNU standards

Di culté de porter toutes les applications (ou librairies)

compatibles linux.

Mais le support de X-Window reste néanmoins possible

Le Code de google n’est pas reversé dans le noyau linux car

Android forme un nouvel arbre de développement.

51 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Bibliothèques Natives

Elles fournissent un acces direct aux ressources du systeme

Une couche d’abstraction au framework Java Android

52 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Librairies

53 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Librairies

Android inclus un ensemble de librairies C/C++

Utilisées par les applications Android

Accessibles au développeur via le SDK

Quelques unes de ces librairies

  • Librairie Système C : une implémentation dérivé de

-

-

l’implémentation BSC des librairies standard C (libc)

LibWebCore : Un moteur de navigateur internet moderne

utilisé autant pour navigateur android que pour les vues web

intégrables

SQLite : un système de gestion de base de données relationnel

léger et puissant disponible pour toutes les applications.

54 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Bibliothèques Natives : Bionic Libc

Elles ne reposent pas sur la classique GNU Libc.

Sa propre bibliothèque C appelée Bionic Libc.

Pas l’ensemble des fonctions POSIX.

Bionic Libc ne prend en charge que les architectures ARM et

x86.

Publicité

Bon support ARM au revoir Power PC ou MIPS

Les threads sont incompatibles avec POSIX

55 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Bibliothèques Natives (les connues)

SQLite

WebKit

FreeType

56 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Bibliothèques Natives : Google made

Le media framework : codec, compression, lecture, écriture.

Surface Manager : Dessiner à l’écran s’interface avec le noyau

par framebu↵er.

57 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Librairies

...

-

  • Librairies MultiMedia : basées sur ”PacketVideo’s

OpenCORE”. Intégre le support de la lecture et de

l’enregistrement de nombreux formats audio, vidéo et image

(MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG...)

Surface Manager : gere l’acces et l’a chage des di↵érentes

vues (2D ou 3D) composant les applications

SGL : Le moteur de rendu pour l’imagerie 2D

Librairie 3D : Une implémentation basée sur l’API OpenGL ES

1.0. Intégrant à la fois l’accélération matérielle (si disponible)

et l’accélération logicielle.

FreeType : Librairie de rendu de police bitmap et vectorielles.

-

-

-

58 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Android Runtime

59 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Android Runtime

-

-

-

DVM : Dalvik Virtual Machine

Ecrite par Dan Bornstein

Dalvik : village de pêcheurs en islande

Une sorte de JVM optimisée pour les systèmes limités en

mémoire et en puissance.

Exécute les applications ”.dex” compilés depuis le code

automatiquement par le SDK avec l’outil ”dx”

Utilise du ByteCode spécifique et non du ByteCode Java

Optimisée également pour être ”multi-instance” sur un seul

terminal.

-

-

-

Aout 2010 : Oracle (Java) porte plainte envers Google pour

leur implémentation de Dalvik qui serait basé sur le code

source de java... Procès gagné par Google en 2012, mais

perdu en 2014 (1 miliard $ à payer pour Oracle) .

60 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Android Runtime : Compilation

Deux passages :

.JAVA vers .CLASS

Concaténation des .CLASS en .DEX

Une application c’est :

Le bytecode DEX

des ressources (images, sons...)

Le tout regroupé dans un package .APK

61 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Android Runtime

Android inclus un ensemble de librairies de base proposant

ainsi la quasi totalité des fonctionnalités disponibles dans le

langage de programmation Java.

Chaque application sous Android utilise sa propre instance

d’une DVM.

-

-

-

-

Pas de problème d’interaction entres les applications

Espace protégé

Pas de risque de plantage général

D’ou` la nécessité d’une VM optimisée !

62 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Android Runtime

Au démarrage d’Android:

Une machine virtuelle est lancée afin de pré-charger presque

2000 classes.

Zygote

Les instances de Dalvik initiées par le lancement d’applications

sont des forks de Zygote.

Un cache est mis en place dès le démarrage pour accélérer le

chargement du bytecode DEX.

63 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Android Runtime

Une machine virtuelle JAVA reposant sur un système

GNU/Linux ne serait pas utilisable.

Un mécanisme de compilation à la volée (JIT) permet

d’accélérer l’exécution.

Les Core Libraries intégrent l’API standard JAVA J2SE 1.5.

Des fonctionnalités sont enlevées : toolkit SWING, fonctions

d’impression.

64 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Android Runtime

Code Natif :

Codage via le Android NDK

JNI permet le pont entre le natif et Dalvik

Peu utilisé sauf pour les jeux (habitude de programmeurs)

Permet des gains de performance parfois. Cela dépend de

l’application.

65 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

ART au lieu Dalvik VM à partir de SDK 5.0

Android Runtime

La machine virtuelle Dalvik a été officiellement remplacée par ART

(Android Runtime) qui est maintenant activé par défaut.

ART est un moteur d'exécution multi-plate-forme qui prend en charge les

architectures x86, ARM, MIPS et les environnements 32 bits et 64 bits.

Contrairement à Dalvik, qui utilise la compilation juste à temps (JIT), ART

compile les applications lors de l'installation (compilation anticipée) ou AOT

(Ahead of Time), elles sont ensuite exécutées exclusivement à partir de la

version compilée.

Cette technique élimine la charge de traitement associée à la compilation

JIT, améliorant les performances du système ainsi que la consommation

d'énergie

65 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Framework Applicatif

Framework écrit en Java.

Fournit tout ce que les applications ont besoin.

API du framework décrite dans la documentation du SDK

E´léments du framework :

Activity Manager : cycle de vie des applications (backstack).

Assure le multi tâche

Package Manager : Manipulation du format .apk

Window Manager : utilise Surface Manager.

Ressource Manager : Tout ce qui n’est pas du code.

Content Manager : Partage des données entre processus

View System : équivalent d’un toolkit GTK+. Gère le rendu

HTML

Telephony Service : fournit l’accès aux services GSM, 3G,

GPRS

Location Service : fournit l’acces a la gestion du GPS.

Bluetooth Service

Wifi Service

Sensor Service

66 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Framework Applicatif

Framework écrit en Java.

67 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Framework Applicatif

68 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Framework Applicatif

Plateforme de developpement Ouverte

-

-

-

-

-

-

Permet des application riches et variées

Acces au matériel

Acces aux informations de localisation

Lancement de services de fond

Publicité

Mise en place d’alarmes, de notifications

...

69 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Framework Applicatif

Plateforme de developpement Ouverte

Architecture concue pour simplifier la réutilisation des

composants

Publication des capacités des applications

Les autres applications peuvent utiliser ces capacités

Chargé facilement les apps.

70 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Framework Applicatif

Une application est composée d’un ensemble de services et de

systèmes incluant :

Un ensemble de vues ”Views” utilisées pour construire

l’application (listes, grilles, zone de saisies, boutons ou encore

navigateur web intégrable)

”Content Provider” permettant aux applications d’accéder

aux données d’autres applications (Contacts...) ou de partager

leur propres données.

”Resource Manager” permettant d’accéder a des ressources tel

que des chaines de caractères, des images ou des ”layout” (le

tout paramétrable selon de multiples critères : taille de l’écran,

internationalisation...)

71 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Framework Applicatif

Mais aussi :

”Notification Manager” permettant à chaque application

d’utiliser la barre de statut générale pour y intégrer ses

propres informations.

”Activity Manager” : composant qui gère le cycle de vie d’une

application et fournit les outils de navigation applicative.

72 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Applications

73 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Applications

2 parties :

Les activités : des fenêtres interactives

Les services : tâches de fond.

Les applications tournent dans leurs SandBoxes

Communications entre applications : Les ”intent”

Intent = intention : formule une demande

Plusieurs composants peuvent répondre à un ”intent” .

74 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Applications

Dernière couche sur Android

Plusieurs sont intégrées dans le système :

Ecran ”Home”

Gestion des Emails

Gestion des SMS/MMS

Gestion de la téléphonie

Google Maps...

Application supplémentaires installables

Toutes les applications sont écrites via le même SDK !

75 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Généralités

Les applications sont écrites en Java

Le code compilé ”dex” ainsi que les ressources (images,

layout...) sont regroupés dans une archive au format ”apk”

par les outils du SDK

Cette archive ”apk” est un tout permettant la distribution et

l’installation de l’application sur n’importe quelle plateforme

android.

76 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Indépendance

Chaque application Android est isolé des autres à plusieurs

niveaux :

-

  • Chaque application tourne sur son propre process Linux. Ce

processus est lancé par Android dès qu’une partie du code

nécessite une éxécution et inversement tue les processus dont il

n’a plus d’utilité.

De plus chaque process utilise sa propre machine virtuelle

Dalvik. Ainsi chaque application possède son propre

environnement.

Chaque application est associé à un unique Linux User Id.

Ainsi les fichiers d’une application ne sont pas visibles par les

autres applications. (mais il existe des moyens de partager ces

ressources, par exemple via les Content Provider)

Il est possible de forcer deux application de partager le même

user ID (et donc de partager des fichiers nativement). Il est

également possible donc d’utiliser la même VM et le même

processus Linux.

-

-

77 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Indépendance

Un des aspect les plus important d’Android est la

réutilisabilité

  • Chaque application peut utiliser des ”morceaux d’autres

applications” (si elle le permettent)

  • Par exemple si votre application permet de retoucher des photos

et que vous désirez publier cette photo vous pouvez utiliser

toutes les applications déjà présentes pour réaliser cette tâche

(facebook, picasa, mail ...). Et sans utiliser le code de cette

application tierce juste en appeler la partie intéressante.

Ainsi le système doit être capable :

  • De lancer n’importe quelle partie exposée d’une application

sans en lancer la totalité

  • Donc les application Andoid n’ont pas de point d’entrée global

(méthode main()). Mais sont composés d’éléments

indépendants ou chacun peut être lancé individuellement.

78 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

E´léments Fondamentaux

Activity

Service

BroadcastReceiver

ContentProvider

Intent

79 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Les Activity

Une activité (”Activity”) = une IHM pour une action

utilisateur précise :

-

-

-

Liste d’éléments parmis lesquels l’utilisateur peut choisir

A chage d’une image avec un titre

A chage d’un calendrier pour choisir une date

Exemple d’une application de SMS :

Une activité pour choisir un contact

Une autre pour écrire le message

Une autre pour a cher un historique d’échanges.

-

-

-

Chaque activité est indépendante des autres

Une activité doit hériter de la classe : android.app.Activity

80 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Les Activity

Une application est donc un ensemble d’activités

On doit définir quelle est la premiere activité a exécuter lors

du lancement de l’application

Pour naviguer dans l’application chaque activité doit

elle-même lancer l’activité suivante.

81 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Les Activity

Chaque activité est assignée à une fenêtre

Plein écran

Fenêtre flottante

Une activité peux aussi posséder des sous fenêtres

Pop-up ...

-

-

-

82 /125

Organisation du module

Généralité

Le Système

Fonctionnement des Applications

Une Approche Système

Les Activity

Le rendu d’une activité est définit par :

Une ou un ensemble de vues

Les vues héritent de la classe android.view.View

Chaque vue controle une zone rectangulaire de l’activité

L’organisation est définit par un arbre de ”Layout” ou chaque

feuille est une vue.

Un grand nombre de vues standards sont proposées

(combobox, zone de texte, bouton...)

Possibilité de définir des vues personnalisées

83 /125

Organisation du module

Généralité

Le Système

Fonctionnement d...