Environnement Android
Architecture 1
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.
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 :
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:
32 bits afin de simplifier l'interpréteur.
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.
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:
Les composants fondamentaux d’une application Android
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.
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 un composant 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.
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.
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 :