Présentation de la couche d'abstraction matérielle (HAL)

Une couche d'abstraction matérielle (HAL) est un type de couche d'abstraction avec une interface standard que les fournisseurs de matériel doivent implémenter. Un HAL permet aux fournisseurs de matériel d'implémenter des fonctionnalités de niveau inférieur spécifiques à l'appareil sans affecter ni modifier le code des couches de niveau supérieur.

Conditions requises

Vous trouverez ci-dessous la liste des définitions des termes utilisés dans cette section de la documentation:

Langage de définition d'interface Android (AIDL)
Langage semblable à Java utilisé pour définir des interfaces de manière indépendante du langage de programmation utilisé. AIDL permet la communication entre les clients HAL et les services HAL.
HAL lié
HAL qui communique avec d'autres processus à l'aide d'appels de communication inter-processus (IPC) de liaison. Les HAL liés s'exécutent dans un processus distinct du client qui les utilise. Les HAL liées sont enregistrées auprès d'un gestionnaire de services afin que les clients puissent accéder à leurs fonctionnalités. Les HAL écrites pour Android 8 et versions ultérieures sont liées.
Client HAL
Processus qui accède au service HAL.
Interface HAL
Interface commune utilisée par le client et le service HAL pour communiquer.
Service HAL

Code spécifique au matériel, tel que le code qui permet d'accéder à la caméra de votre appareil spécifique. Vous devez mettre en œuvre toutes les HAL requises, répertoriées dans la matrice de compatibilité de la version que vous ciblez dans votre partition de fournisseur. Pour en savoir plus sur les matrices de compatibilité, consultez la section Matrices de compatibilité.

Vous pouvez également créer une interface HAL ou étendre l'interface d'un HAL pour prendre en charge les fonctionnalités uniques de votre matériel.

Hardware Interface Definition Language (HIDL)

Langage utilisé pour définir des interfaces de manière indépendante du langage de programmation utilisé. HIDL permet la communication entre les clients HAL et les services HAL.

HAL Same Process (SP)

Ensemble restreint de HAL encapsulés. L'appartenance à l'ensemble est contrôlée par Google. Les HAL SP incluent:

  • HAL de mappeur C stable 5
  • OpenGL
  • Vulkan
  • android.hidl.memory@1.0 (fourni par le système Android, toujours encapsulé)
  • android.hardware.renderscript@1.0
HAL encapsulé

Service HAL créé avant Android 8, mais encapsulé dans un wrapper AIDL ou HIDL pour fonctionner avec Android 8 ou version ultérieure.

Et maintenant ?