Google si impegna a promuovere l'equità razziale per le comunità nere. Vedi come.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Architettura Android

L'architettura di sistema Android contiene i seguenti componenti:

Panoramica dell'architettura di sistema Android
Figura 1. Architettura del sistema Android
  • Quadro applicativo Il framework delle applicazioni viene utilizzato più spesso dagli sviluppatori di applicazioni. Come sviluppatore hardware, dovresti essere a conoscenza delle API degli sviluppatori poiché molte mappano direttamente alle interfacce HAL sottostanti e possono fornire informazioni utili sull'implementazione dei driver.
  • Binder IPC . Il meccanismo Binder Inter-Process Communication (IPC) consente al framework dell'applicazione di attraversare i confini del processo e chiamare il codice dei servizi di sistema Android. Ciò consente alle API framework di alto livello di interagire con i servizi di sistema Android. A livello di framework applicativo, questa comunicazione è nascosta allo sviluppatore e le cose sembrano "funzionare".
  • Servizi di sistema . I servizi di sistema sono componenti modulari e focalizzati come Window Manager, Search Service o Notification Manager. La funzionalità esposta dalle API del framework dell'applicazione comunica con i servizi di sistema per accedere all'hardware sottostante. Android include due gruppi di servizi: sistema (come Window Manager e Notification Manager) e media (servizi coinvolti nella riproduzione e registrazione di media).
  • Livello di astrazione hardware (HAL) . Un HAL definisce un'interfaccia standard da implementare per i fornitori di hardware, che consente ad Android di essere agnostico sulle implementazioni di driver di livello inferiore. L'uso di un HAL consente di implementare funzionalità senza influire o modificare il sistema di livello superiore. Le implementazioni HAL sono raggruppate in moduli e caricate dal sistema Android al momento opportuno. Per i dettagli, consultare Hardware Abstraction Layer (HAL) .
  • Kernel Linux . Lo sviluppo dei driver di dispositivo è simile allo sviluppo di un tipico driver di dispositivo Linux. Android utilizza una versione del kernel Linux con alcune aggiunte speciali come Low Memory Killer (un sistema di gestione della memoria più aggressivo nel preservare la memoria), wake lock (un servizio di sistema PowerManager ), il driver Binder IPC e altre importanti funzionalità per una piattaforma mobile integrata. Queste aggiunte riguardano principalmente la funzionalità del sistema e non influiscono sullo sviluppo del driver. È possibile utilizzare qualsiasi versione del kernel purché supporti le funzionalità richieste (come il driver del raccoglitore). Tuttavia, si consiglia di utilizzare l'ultima versione del kernel Android. Per i dettagli, vedi Creazione di kernel .

Linguaggio di definizione dell'interfaccia HAL (HIDL)

Android 8.0 ha riprogettato il framework del sistema operativo Android (in un progetto noto come Treble ) per rendere più semplice, veloce e meno costoso per i produttori aggiornare i dispositivi a una nuova versione di Android. In questa nuova architettura, il linguaggio di definizione dell'interfaccia HAL (HIDL, pronunciato "hide-l") specifica l'interfaccia tra un HAL e i suoi utenti, consentendo di sostituire il framework Android senza ricostruire gli HAL.

HIDL separa l'implementazione del fornitore (software di livello inferiore specifico per dispositivo scritto dai produttori di silicio) dal framework del sistema operativo Android tramite una nuova interfaccia del fornitore. I fornitori o i produttori di SOC creano gli HAL una volta e li posizionano in una partizione /vendor sul dispositivo; il framework, nella sua stessa partizione, può quindi essere sostituito con un aggiornamento over-the-air (OTA) senza ricompilare gli HAL.

La differenza tra l'architettura Android legacy e l'attuale architettura basata su HIDL sta nell'uso dell'interfaccia del fornitore:

  • In Android 7.xe precedenti, non esiste alcuna interfaccia del fornitore formale, quindi i produttori di dispositivi devono aggiornare grandi parti del codice Android per spostare un dispositivo in una versione più recente di Android:

    Figura 2. Ambiente di aggiornamento Android legacy
  • In Android 8.0 e versioni successive, una nuova interfaccia stabile del fornitore fornisce l'accesso alle parti specifiche dell'hardware di Android, in modo che i produttori di dispositivi possano fornire nuove versioni di Android semplicemente aggiornando il framework del sistema operativo Android, senza che sia necessario ulteriore lavoro da parte dei produttori di silicio:

    Figura 3. Ambiente di aggiornamento Android corrente

Tutti i nuovi dispositivi che si avviano con Android 8.0 e versioni successive possono sfruttare la nuova architettura. Per garantire la compatibilità futura delle implementazioni del fornitore, l'interfaccia del fornitore è convalidata da Vendor Test Suite (VTS) , analogo a Compatibility Test Suite (CTS) . È possibile utilizzare VTS per automatizzare i test del kernel HAL e OS in architetture Android legacy e attuali.

Risorse di architettura

Per i dettagli sull'architettura Android, consultare le seguenti sezioni:

  • Tipi di HAL . Descrive HAL binderized, passthrough, Same-Process (SP) e legacy.
  • HIDL (Generale) . Contiene informazioni generali sull'interfaccia tra un HAL e i suoi utenti.
  • HIDL (C ++) . Contiene dettagli per la creazione di implementazioni C ++ delle interfacce HIDL.
  • HIDL (Java) . Contiene dettagli sul frontend Java per le interfacce HIDL.
  • ConfigStore HAL . Descrive le API per l'accesso agli elementi di configurazione di sola lettura utilizzati per configurare il framework Android.
  • Sovrapposizioni dell'albero dei dispositivi . Fornisce dettagli sull'uso delle sovrapposizioni dell'albero dei dispositivi (DTO) in Android.
  • Vendor Native Development Kit (VNDK) . Descrive il set di librerie esclusive del fornitore per l'implementazione degli HAL del fornitore.
  • Vendor Interface Object (VINTF) . Descrive gli oggetti che aggregano le informazioni rilevanti su un dispositivo e rendono tali informazioni disponibili tramite un'API interrogabile.
  • SELinux per Android 8.0 . Dettagli Modifiche e personalizzazioni di SELinux.

Oltre alle risorse di questo sito, i membri del team Treble hanno pubblicato Treble: aggiornamenti software rapidi creando un equilibrio in un ecosistema software attivo di parti interessate distribuite a livello globale . L'articolo è gratuito per i membri ACM e i non membri possono acquistare o leggere l'abstract.