Android
Hardware Abstraction Layer

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 :
- pas tous les drivers kernel n’ont 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.