Google is committed to advancing racial equity for Black communities. See how.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Architettura Android

L'architettura del sistema Android contiene i seguenti componenti:

Panoramica dell'architettura del sistema Android
Figura 1. Architettura del sistema Android
  • Framework dell'applicazione . Il framework dell'applicazione viene utilizzato più spesso dagli sviluppatori di applicazioni. In qualità di sviluppatore hardware, dovresti essere a conoscenza delle API per sviluppatori poiché molte si associano 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 del 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 e basta".
  • Servizi di sistema . I servizi di sistema sono componenti modulari e mirati 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 supporti).
  • 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'utilizzo di un HAL consente di implementare funzionalità senza influire o modificare il sistema di livello superiore. Le implementazioni di HAL sono confezionate in moduli e caricate dal sistema Android al momento opportuno. Per i dettagli, vedere 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 che è più aggressivo nel preservare la memoria), wakelock (un servizio di sistema PowerManager ), il driver Binder IPC e altre funzionalità importanti per una piattaforma mobile incorporata. 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 binder). Tuttavia, ti consigliamo di utilizzare l'ultima versione del kernel Android. Per i dettagli, vedere 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 ei suoi utenti, consentendo di sostituire il framework Android senza ricostruire gli HAL.

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

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

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

    Figura 2. Ambiente di aggiornamento Android precedente
  • 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 lavoro aggiuntivo richiesto dai produttori di silicio:

    Figura 3. Ambiente di aggiornamento Android corrente

Tutti i nuovi dispositivi che vengono lanciati 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 dalla Vendor Test Suite (VTS) , che è analoga alla Compatibility Test Suite (CTS) . È possibile utilizzare VTS per automatizzare i test del kernel di HAL e OS nelle architetture Android legacy e attuali.

Risorse di architettura

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

  • Tipi HAL . Descrive gli 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 i 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 usati per configurare il framework Android.
  • Sovrapposizioni dell'albero dei dispositivi . Fornisce dettagli sull'utilizzo degli overlay della struttura ad 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 su modifiche e personalizzazioni di SELinux.

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