Architettura AOSP

L' Android Open System Platform (AOSP) è un codice sorgente Android pubblicamente disponibile e modificabile. Chiunque può scaricare e modificare AOSP per il proprio dispositivo. AOSP fornisce un'implementazione completa e perfettamente funzionante della piattaforma mobile Android.

Esistono due livelli di compatibilità per i dispositivi che implementano AOSP: compatibilità AOSP e compatibilità Android. Un dispositivo compatibile con AOSP deve essere conforme all'elenco dei requisiti nel Documento di definizione della compatibilità (CDD) . Un dispositivo compatibile con Android deve essere conforme all'elenco dei requisiti in CDD e Vendor Software Requirements (VSR) e test come quelli in Vendor Test Suite (VTS) e Compatability Test Suite (CTS) . Per ulteriori informazioni sulla compatibilità Android, fare riferimento al programma di compatibilità Android .

Architettura AOSP

Lo stack software per AOSP contiene i seguenti livelli:

Architettura dello stack software AOSP
Figura 1. Architettura dello stack software AOSP.
  • Applicazione Android. Un'app creata utilizzando esclusivamente l'API di Android all'interno dell'SDK di Android. Google Play Store è ampiamente utilizzato per trovare e scaricare app Android, sebbene ci siano molte altre alternative. In alcuni casi, un produttore di dispositivi potrebbe voler preinstallare un'app Android per supportare le funzionalità principali del dispositivo. Se sei interessato a sviluppare app per Android, vai su developer.android.com .
  • App privilegiata. Un'app creata utilizzando una combinazione delle API Android e di sistema. Queste app devono essere preinstallate come app con privilegi su un dispositivo.
  • App per la produzione di dispositivi. Un'app creata utilizzando una combinazione di API Android, API di sistema e accesso diretto all'implementazione del framework Android. Poiché un produttore di dispositivi potrebbe accedere direttamente ad API instabili all'interno del framework Android, queste app devono essere preinstallate sul dispositivo e possono essere aggiornate solo quando il software di sistema del dispositivo viene aggiornato.
  • Struttura Android. Un gruppo di classi Java, interfacce e altro codice precompilato su cui vengono create le app. Parti del framework sono pubblicamente accessibili tramite l'uso delle API Android di Android SDK. Altre parti del framework sono disponibili solo per gli OEM tramite l'uso delle API di sistema di Android SDK. Il codice del framework Android viene eseguito all'interno del processo di un'app.
  • SDK Android. Un kit di sviluppo software da utilizzare nella creazione di app che interagiscono con il framework Android. L'Android SDK è costituito dall'API Android, disponibile per tutte le app, e dall'API di sistema, disponibile solo per le app privilegiate. Per ulteriori informazioni sull'API Android di Android SDK, vai su developer.android.com . Tieni presente che esiste anche un kit di sviluppo nativo per Android (NDK) che ti consente di scrivere parte della tua app Android utilizzando il codice nativo.
  • Servizi di sistema. I servizi di sistema sono componenti modulari e focalizzati come system_server , SurfaceFlinger e MediaService. La funzionalità esposta dall'API del framework Android comunica con i servizi di sistema per accedere all'hardware sottostante.
  • Tempo di esecuzione Android (ART). Un ambiente di runtime dell'applicazione Java fornito da AOSP. ART esegue la traduzione del bytecode dell'applicazione in istruzioni specifiche del processore che vengono eseguite dall'ambiente di runtime del dispositivo.
  • Strato di astrazione hardware (HAL). Un HAL è un livello di astrazione con un'interfaccia standard che i fornitori di hardware possono implementare. Gli HAL consentono ad Android di essere indipendente dalle implementazioni dei driver di livello inferiore. L'utilizzo di un HAL consente di implementare funzionalità senza influire o modificare il sistema di livello superiore.
  • Per ulteriori informazioni, vedere la panoramica HAL .
  • Demoni e librerie nativi. I demoni nativi in ​​questo livello includono init , healthd , logd e storaged . Questi demoni interagiscono direttamente con il kernel o altre interfacce e non dipendono da un'implementazione HAL basata sullo spazio utente. Le librerie native in questo livello includono libc , liblog , libutils , libbinder e libselinux . Queste librerie native interagiscono direttamente con il kernel o altre interfacce e non dipendono da un'implementazione HAL basata sullo spazio utente.
  • Nocciolo. La parte centrale di qualsiasi sistema operativo, il kernel comunica con l'hardware sottostante su un dispositivo. Ove possibile, il kernel AOSP è suddiviso in moduli indipendenti dall'hardware e moduli specifici del fornitore. Per una descrizione, comprese le definizioni, dei componenti del kernel AOSP, fare riferimento a Kernel Overview .

Qual è il prossimo?

  • Se sei nuovo in AOSP e desideri iniziare con lo sviluppo, procedi alla sezione Per iniziare .
  • Se vuoi saperne di più su uno specifico livello di AOSP, fai clic sul nome del livello nella barra di navigazione a sinistra e inizia con la panoramica per quel livello.