Panoramica dell'HAL (Hardware Astrazione Layer)

Un livello di astrazione hardware (HAL) è un tipo di livello di astrazione con un'interfaccia standard che i fornitori di hardware possono implementare. Un HAL consente ai fornitori di hardware di implementare funzionalità specifiche per dispositivo di livello inferiore senza influire o modificare il codice nei livelli di livello superiore.

Termini obbligatori

Di seguito è riportato un elenco delle definizioni dei termini utilizzati in questa sezione della documentazione:

AIDL (Android Interface Definition Language)
Linguaggio simile a Java utilizzato per definire le interfacce in modo indipendente dal linguaggio di programmazione utilizzato. AIDL consente la comunicazione tra client HAL e servizi HAL.
HAL vincolato
Un HAL che comunica con altri processi mediante chiamate di binder Inter-Process Communication (IPC). Gli HAL Binderizzati vengono eseguiti in un processo separato da quello del client che li utilizza. Gli HAL Binderizzati sono registrati con un gestore del servizio in modo che i clienti possano accedere alle loro funzionalità. Gli HAL scritti per Android 8 e versioni successive sono vincolati.
Client HAL
Il processo che accede al servizio HAL.
Interfaccia HAL
L'interfaccia comune utilizzata sia dal client HAL sia dal servizio per comunicare.
Servizio HAL

Il codice specifico dell'hardware, ad esempio il codice necessario per la fotocamera del dispositivo specifico. Devi implementare tutti gli HAL richiesti elencati nella matrice di compatibilità per la release che scegli come target nella partizione del fornitore. Per ulteriori informazioni sulle matrici di compatibilità, consulta Matrici di compatibilità.

Puoi anche creare una nuova interfaccia HAL o estendere l'interfaccia di un HAL, per supportare le funzionalità specifiche del tuo hardware.

HIDL (Hardware Interface Definition Language)

Linguaggio utilizzato per definire le interfacce in un modo indipendente dal linguaggio di programmazione utilizzato. HIDL consente la comunicazione tra i client HAL e i servizi HAL.

HAL per la stessa procedura (SP)

Un insieme limitato di HAL con wrapping. L'appartenenza all'insieme è controllata da Google. Gli HAL SP includono:

  • C Mapper stabile 5 HAL
  • OpenGL
  • Vulkan
  • android.hidl.memory@1.0 (fornita dal sistema Android, sempre con wrapping)
  • android.hardware.renderscript@1.0
HAL avvolto

Un servizio HAL creato prima di Android 8, ma che è stato aggregato in un wrapper AIDL o HIDL per funzionare con Android 8 e versioni successive.

Passaggi successivi

  • Per scoprire come implementare un servizio HAL, consulta la pagina relativa ad AIDL per HAL.
  • Per informazioni su come creare o estendere un HAL esistente, consulta la pagina Interfacce estese collegate.