2. 2
❑C’est un système d’exploitation OPEN SOURCE
pour terminaux mobiles (Smartphones, Tablet
,….
Introduction 1/2
3. ❑ Initialement, Android a été lancé par Andy Rubin en
2003, son idée était de développer un système
d'exploitation pour les appareils photo numériques, pas les
téléphones.
❑ Il a changé d'avis rapidement, et s'est rendu compte que la
technologie allait bientôt exploser sur les mobiles, il a
commencé à développer le système d'exploitation pour les
téléphones mobiles.
Andy Rubin
2003 Android
3
4. ❑Après la sortie de l'iPhone d'Apple en 2007, Open Handset
Alliance (OHA) a vu le jour et a eu comme première tâche de
développer des normes ouvertes pour les mobiles.
❑Aujourd’hui, Android est le système d’exploitation mobile le
plus utilisé à travers le monde avec plus de 86 % de la part du
marché des OS.
❑Après une énorme perte, Andy Rubin a décidé de fermer
Android et Google l’a racheté le 17 août 2005.
•Google a
racheté
•Android
Inc.
2005
OHA
Consortium
lancé par
google
2007
•Android
OS 86,2 %
•Apple iOS
12,9 %
2019
4
5. Introduction 2/2
❑ Libre : Il peut fonctionner sur de nombreux appareils différents de
nombreux fabricants
❑ Extensible : fournit un kit de développement logiciel contenant plusieurs
outils aidant à développer des projets et des modules logiciels pour créer
des applications pour les utilisateurs d'Android.
❑ Faciles à développer : toutes les API mises à disposition facilitent et
accélèrent grandement le travail. Ces APIs sont très complètes et très
faciles d'accès. De manière un peu caricaturale, on peut dire que vous
pouvez envoyer un SMS en seulement deux lignes de code.
❑ Facile à vendre : le Play Store (anciennement Android Market) est une
plateforme immense et très visitée ; c'est donc une mine d'opportunités
pour quiconque possède une idée originale ou utile.
❑ Ingénieuse : l'architecture d'Android est inspirée par les applications
composites, et encourage par ailleurs leur développement. Ces
applications se trouvent essentiellement sur internet et leur principe est
que vous pouvez combiner plusieurs composants totalement
❑ Il représente un écosystème pour les applications mobiles par ses
différents outils, acteurs et marché. 5
6. 6
Plateforme Android
Le système d’exploitation Android est conçu sous forme de pile de
cinq couches principales, chacune est une abstraction de la couche
supérieure. Android est basé sur :
❑un noyau Linux au-dessus duquel il y a
❑le Hardware Abstraction Layer (HAL) qui est une couche
d’abstraction du matériel.
❑Ensuite on retrouve un certain nombre de bibliothèques de
C et C++ permettant d’utiliser un certain nombre de
composants Android.
❑ Juste après, on retrouve, la plateforme de développement
par ses différents outils.
❑La dernière couche englobe les applications utilisateurs.
8. 8
1.Linux kernel
❑ Il est basé sur un noyau 2.6 de Linux,
❑ il assure la gestion multitâche préemptive des processus.
❑ Il fournit les services système de bas-niveau tel que la gestion
de la mémoire, stockage, énergie, communication réseaux et
les drivers des différentes unités matérielles.
2. Hardware Abstraction Layer (HAL)
Cette couche se situe entre les librairies et le kernel linux, elle fournit les
interfaces que doivent implémenter les drivers kernel. Cette couche sépare la
plateforme logique des interfaces matérielles. Le but de cette couche est de
faciliter le portage des librairies sur différents matériels.
9. Les ingénieurs d'Android ont décidé de faire cette couche car :
❑ les drivers kernel n’ont pas tous des interfaces standardisées.
❑ les drivers kernel sont sous licence GPL ce qui exposerait les
interfaces propriétaires des fabricants. Les fabricants veulent pouvoir
garder ces interfaces en "closed source"
❑ Android a des besoins spécifiques pour les drivers kernel.
3. Librairies
Un ensemble de bibliothèques C/C++
(Natives) utilisées par les composants
systèmes ; elles peuvent être aussi
utilisées par les développeurs via le SDK.
Elle contient entre autres :
❑ Libc: bibliothèque c standard, SSL: Secure Socket Layer communication
❑ SGL: dessin 2D, OpenGL|ES: image 3D
❑ Media Framework: media codecs, SQLite: gestionnaire de BDD SQLite
❑ WebKit: noyau du browser web, FreeType: fonts Bitmap et vectorielles
❑ SufraceManager: window manager with off-screen buffering. 9
10. 4. Runtime
Cette couche se situe au-dessus des
libraires C/C++, elle se compose du
"cœur" du Framework et de la
machine virtuel dalvik.
Les applications Java développées pour Android
doivent être compilées au format dalvik exécutable
(.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 dupliquées et
autre constantes utilisées dans de multiples classes
sont regroupées dans un .dex. Le bytecode utilisé dans
les .dex est le Dalvik bytecode et non le java Bytecode.
La VM Dalvik a quelques caractéristiques spécifiques par rapport aux autres VM:
❑ la VM a été "dégraissée" pour utiliser moins d'espace mémoire,
❑ pas de compilation à la volée (JIT),
❑ elle utilise son propre bytecode et pas le Java bytecode,
❑ la table des constantes a été modifié pour n'utiliser que des indexes de
32 bits afin de simplifier l'interpréteur.
10
11. Core Libraries : un ensemble d’API écrites en java que le développeur peut
appeler dans son programme. Ceci inclut les packages qui sont dans la racine
telles que : android.view, android.widget, android.media, …
5. Application framework
C’est l’ensemble des services offerts par Android pour l’utilisateur. Ces
composants peuvent être réutilisés par le développeur pour les étendre à
d’autres finalités.
❑Les développeurs ont le plein accès à tous les API de la Framework
utilisées par les applications de base (core apps)
❑Les développeurs peuvent remplacer ces composants.
11
12. Rôle
System View
Utilisé pour construire une application. Ceci
inclut : lists, grids, textboxes, buttons, web
browsers
Content Provider
Permet à une application d’accéder à des
données externes et de partager les sienne
avec d’autres applications.
Resource Manager
Permet d’accéder à des ressources telles que
(strings, graphics, and layout files)
Notification
Manager
Gestionnaire des alertes
Activity Manager Gère le cycle de vie d’une activité
Telephony
manager
Gère tous les appels téléphoniques.
Locations manager Gère les localisations GPS, opérateur ou Wifi
12
13. 6. Applications
Cette couche englobe toutes les applications tournant sous Android, que
se soient celles livré par la plateforme, telle que google Map, mail, …ou
celles développées par des tiers.
Sécurité dans le système Android
Chaque application est exécutée dans une sandbox:
❑Android est un système Linux multi‐utilisateur
❑Chaque application est un utilisateur différent
❑Chaque fichier de l'application n'est accessible que par cette
application
❑Par défaut, chaque processus possède sa machine virtuelle
❑Chaque application a son propre processus Linux
13
14. Une application Android est construite sur la base de quatre composants
fondamentaux : Activity, Service, ContentProvider et BroadcastReceiver.
Chaque composant est un point d'entrée par lequel le système ou un
utilisateur peut entrer dans votre application. Ces composants
communiquent entre eux, et entre d’autres applications, via les Intents.
Les composants fondamentaux d’une application Android
14
15. 15
Qu’est-ce qu’un programme Android?
Android offre un framework riche mais suffisamment rigide et étanche:
❑ Du XML pour les interfaces
❑ Les activités : briques de base d’une application
❑ Les services : conçus pour durer
❑ Les fournisseurs de contenus : abstraction de données
❑ Les intentions (intents): interagir avec le système
Android permet d’accéder aux fonctionnalités avancées de
l’appareil:
❑ Stockage (base de données, support externe)
❑ Réseau (Wifi, Bluetooth, 3G, ...)
❑ Multimédia (lecture audio, photo, caméra)
❑GPS (géolocalisation des applications par différents moyens)
❑Services de téléphonie (appels, SMS)
16. 1. Activité
Une activité est la composante principale d’une application sous
Android. L'activity est le métier de l'application et possède
généralement une View au minimum, c'est-à-dire un écran graphique.
Elle hérite de la classe Activity (ou AppCompatActivity) de la
plateforme et doit obligatoirement surcharger le callback onCreate.
2. Service
C’est uncomposant polyvalent qui s'exécute en arrière-plan pour effectuer
des opérations de longue durée ou des tâches pour des processus distants. Il
ne fournit pas, généralement, l'interface utilisateur.
16
17. 3. BroadCast Receiver
C’est un composant qui permet au système de transmettre des événements
à l'application en dehors d’un flux utilisateur normal, permettant
à l'application de répondre aux annonces de diffusion à l’échelle du
système.
17
18. 4. Content Provider
Gère un ensemble partagé de données d'application que vous pouvez
stocker dans le système de fichiers, dans une base de données SQLite,
sur le Web ou dans tout autre emplacement de stockage persistant
auquel votre application peut accéder.
ANDROID SDK
Contient les bibliothèques (packages ou libraries) de bases fournies par le
système pour le développement d’applications, plus d’autres outils de
compilation et de construction du package apk.
Il fournit aussi des outils nécessaires au test des applications :
❑ émulateurs Android Virtual Device,
❑ L’outil de débogage (DDMS)
❑ l’Android Device Bridge (adb) pour la
communication avec le mobile virtuel
ou physique.
❑ Un certain nombre d’exemples
d’applications
❑ … 18
19. 19
L’émulateur, un outil indispensable
L’émulateur Android permet de simuler plusieurs terminaux
Informations nécessaires à la configuration d’un AVD :
❑ Une version cible du SDK
❑ Des informations sur le stockage (mémoire, carte SD)
❑ Résolution de l’appareil choisi