Vous êtes sur la page 1sur 24

Android

Quelques chiffres
- Google a gagné 1,5 milliard d'utilisateurs Android
supplémentaires au cours des quatre dernières années,
supplantant largement Windows et iOS avec un total de 2,5
milliards de terminaux actifs dans le monde en mai 2019

- 2015, Android le système d'exploitation mobile le


plus utilisé dans le monde, devant iOS d’Apple,
- plus de 80 % de parts de marché dans les
smartphones pour l'ensemble de ses versions et
adaptations.

- mars 2019, 2,6 millions


d'applications étaient disponibles
sur le Google Play Store.
Android ?

 Créé en 2004,

 Racheté par Google en 2005,

 Publié en 2007,

 Système d’abord conçu pour les smartphones et tablettes tactiles


puis s’est diversifié dans les ordinateurs, tv,voitures,watch..,
• Un système d’exploitation open source

=>Un système d’exploitation orienté dispositif mobiles


=> il s’agit d’un ensemble de logiciels qui sert d’interface entre le
matériel (les composants du téléphone, d’une tablette...) et les
logiciels applicatifs (ceux que nous allons développer).

• Un système d’exploitation open source

=> disponibilité du code,


=> importante communauté d’utilisateurs.

• Un système d’exploitation basé sur le noyau Linux

• Environnement de développement gratuit

=>Programmation en Java ou en langage C,


=>Kit de développement (SDK Android)
Open source closed source
Permet au développeur de modifier et adapter
une grande partie de code selon leurs préférence

Ne permet pas de changer aucun code en relation avec le système


d’exploitation et offre au développeur un ensemble d’outils (API)
Qui leurs permet de développer des programmes pour IPHONE
Mais elle limite le code accessible
Open source

Larger Developer Support – As its open source anyone can develop for the
platform, giving it a much larger support for developers and gives them more
of a feeling of ownership as they can alter whatever they like.
Customizable – In a closed source scenario, developers are given only options to
change what the original developer chooses, but having full control lets them
customize the look feel and even features of the software giving it much more
possibilities
More Secure – Open source is much more transparent than closed, this means
that anyone can look over the code, by having thousands of people reading
through your code, bugs and vulnerabilities are located much quicker and
submitted for fixing, it also lets you know if the bug has been fixed as you
can check the code after each release.
Extended Community Support – As a product ages the original developer
might move on and stop developing leaving the product to age with no new
fixes or features, but if its open then usually the community takes over and
continues working on it allowing the usable life of the product to be
extended well beyond what the original developer intended.
Closed source

Less confusion for customers – Many people aren’t sure what the advantages
of the different versions of android, is HTC Sense better than MotoBlur?
By not allowing people to alter core features it makes it easier to pick the product
you want, there is only one version of iOS that people need to learn about
Unified experience – Because its close the developer can choose the layout, the
features, the options, the colors, and pretty much anything they choose.
This seems restrictive, but at least guarantees that every user will have a similar
experience and gives it a standard that can’t be changed.
More profitable – A closed model can be greatly profitable as you can charge
money for developers to use your API, and can lock out competition by not
making your design available for them to see.
Développement Android

 L'ecosystème d'Android s'appuie sur deux piliers:

•le langage Java


•le SDK qui permet d'avoir un environnement de développement
facilitant la tâche du développeur
 Le kit de développement donne accès à des exemples, de la
documentation mais surtout à l'API de programmation du système et à un
émulateur pour tester ses applications.

 Google utilise la licence Apache pour Android ce qui permet la


redistribution du code sous forme libre ou non et d'en faire un usage
commercial.

 Le SDK était:
• anciennement manipulé par un plugin d'Eclipse (obsolète)
• maintenant intégré à Android Studio (IntelliJ)
Architecture android
Android est en fait un système de la famille des Linux.
L'OS s'appuie sur:

• Un noyau Linux (et ses drivers)

• Une couche d'abstraction pour l'accès aux capteurs

• Une machine virtuelle: Dalvik Virtual Machine (avant Lollipop)

• Un compilateur de bytecode vers le natif Android Runtime

• Des applications (navigateur, gestion des contacts, application de


téléphonie...)

• Des bibliothèques (SSL, SQLite, OpenGL ES, etc...)

• Des API d'accès aux services Google


Noyau linux
Gestion de la mémoire
Gestion des processus
Gestion du matériel (écran, clavier,…) Gestion des
capteurs (appareil photo, GPS, …)

Des bibliothèques
Graphisme, Média, Web …
Dalvik est une machine virtuelle destinée aux téléphones mobiles et tablettes
tactiles, qui est incorporée dans le système d'exploitation Android. Dalvik est
destiné à permettre l'exécution simultanée de plusieurs applications sur un
appareil de faible capacité (peu d'espace mémoire et peu de puissance de
calcul).
Créé par Dan Bornstein, Dalvik fait partie du runtime, le moteur qui permet
l'exécution des applications pour Android. Le nom est celui d'un village de
pêcheurs en Islande, pays d'origine de son auteur.
Dalvik offre une alternative à la machine virtuelle de la technologie Java. Les
fichiers de bytecode de la technologie Java sont préalablement transformés et
consolidés dans un fichier .dex (Dalvik Executable) en vue de leur utilisation par
Dalvik.
-Tient compte des contraintes de CPU
et de mémoire
- Exécute des fichiers .dex optimisés et
non pas des fichiers .class
- crée une instance pour chaque
processus
- Applications indépendantes, Espaces
protégés, Pas de plantage généralisé.
- ART (Android RunTime) vient remplacer Dalvik VM dans les nouvelles
versions d’android
- Amélioration GarbageCollector, Compilation avancée.

Android RUNTIME
 est un environnement d'exécution utilisé principalement par le
système d'exploitation Android. Il vise à remplacer la machine
virtuelle Dalvik et à remplacer le bytecode par des instructions
natives.

La différence entre Dalvik et ART se situe principalement sur le moment


d’interprétation du code. Dalvik va interpréter le bytecode
(langage intermédiaire entre les instructions machines et le code source)
à la volée pour être exécuté, c’est ce qu’on appelle JIT, pour Just In Time.
Alors que ART va compiler le bytecode (avant que vous en ayez besoin)
une fois pour toutes , avant son utilisation,
c’est ce qu’on appelle AOT : Ahead-Of-time.
Application framework

Cette couche offre plusieurs services haut niveau pour être utilisés par
les applications sous format de classes java.
Parmi les services clefs on trouve:

Activity Manager − Controls all aspects of the application lifecycle and activity
stack.
Content Providers − Allows applications to publish and share data with other
applications.
Resource Manager − Provides access to non-code embedded resources such as
strings, color settings and user interface layouts.
Notifications Manager − Allows applications to display alerts and notifications to
the user.
View System − An extensible set of views used to create application user interfac
Application android
Les intents

- Des objets permettant de faire passer des messages contenant de l'information entre
composants principaux.

-La notion d’Intent peut être vue comme une demande de démarrage d'un autre
composant, d'une action à effectuer.

- La raison d'être des Intents provient du modèle de sécurité d'Android.


Chaque application est en effet sandboxée. Cela veut dire qu'une application
A ne peut accéder aux données d'une application B.

-Grâce aux Intensys, les applications ont la possibilité de fournir leurs services
ou données si elles le souhaitent.
Activity
- repose sur la notion d'interaction utilisateur.

- Une activité, représente la fenêtre ou tout simplement l'écran qui sera


affiché à l'utilisateur.
Elle permet également de gérer des fonctionnalités telles que l'appui sur la touche
[MENU] ou l'affichage de messages d'alerte (toast).

-Faites bien attention à ne pas confondre la notion d’ativité et de view.


Service
- est un programme tournant en tâche de fond et n'ayant pas d'interface graphique

- L'exemple commun illustrant au mieux cette notion est celui du lecteur mp3.
Un lecteur mp3 ne nécessite pas, pour la plupart du temps, d'interface graphique
et doit tourner en tâche de fond laissant la possibilité aux autres applications
de travailler/s'exécuter librement.
Content provider
-C’est un gestionnaire de données.

-Ils permettent de partager l'information entre applications.

-Imaginons une application qui permette de conserver les cartes de


visite virtuelles d'un ensemble de personnes.
Ces cartes de visite contiennent généralement le nom, le prénom et un moyen
de contact de la personne.

-Un tel programme peut être créé sous forme de ContentProvider ce qui lui
permettra de fournir à d'autres applications présentes sur le système
les informations sur une personne. Une application tierce d'envoi de courriel
peut par exemple interroger ce ContentProvider afin d'obtenir l'adresse
courriel d'un contact.
BroadcastReceiver

Pour finir, un BroadcastReceiver est une application qui est à “l'écoute”


des autres applications. Ce type d'application tente de répondre au Intent 
qui lui sont adressés. Il ne fait donc rien d'autres que d'être à l'écoute des
 Intent envoyés par d'autres composants applicatifs.
View
Les Views sont les composants de base de l'interface graphique.
Elles permettent de construire l'interface utilisateur.
Les widgets (nom donné à des composants graphiques “avancés” :
une barre de progression, par exemple, est un widget), composants
graphiques ou autres layout (composant permettant de placer les différents
composants graphiques à l'écran) héritent en fait de cette classe élémentaire.
Le rendu/dessin d'une View s'effectue par l'intermédiaire d'un Canvas (qu'on
peut assimiler à une feuille transparente sur laquelle on dessine avec un
crayon (Paint). Pour finir, la vue est le principal composant qui s'occupe de
gérer les actions utilisateurs (appui sur l'écran, sur le clavier, etc.).
Lorsqu'on créé une application à l'aide du framework Android, le développeur
doit hériter d'au moins une des 4 classes brièvement décrites ci-dessous.
Ces notions de composants applicatifs vous sembleront, j'en suis sûr,
totalement déroutantes au premier abord. Gardez à l'esprit que vos
développements et les différentes parties de ce tutorial, vous permettront
de clarifier vos idées.

Vous aimerez peut-être aussi