Panoramica dell'architettura

L'Android Open Source Project (AOSP) è il codice sorgente di Android disponibile pubblicamente e modificabile. Chiunque può scaricare e modificare AOSP per il proprio dispositivo. AOSP fornisce un'implementazione completa e completamente funzionale 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 Compatibility Definition Document (CDD). Un dispositivo compatibile con Android deve essere conforme all'elenco dei requisiti nel CDD e ai requisiti del software del fornitore (VSR) e a test come quelli della Vendor Test Suite (VTS) e della Compatibility Test Suite (CTS). Per ulteriori informazioni sulla compatibilità con Android, consulta il Programma di compatibilità Android.

Architettura AOSP

Lo stack software per AOSP contiene i seguenti livelli:

AOSP.

Figura 1. Architettura dello stack software AOSP.

Di seguito è riportato un elenco di definizioni dei termini utilizzati nella Figura 1:

App per Android
Un'app creata esclusivamente con l'API Android. Il Google Play Store è ampiamente utilizzato per trovare e scaricare app per Android, anche se esistono molte altre alternative. In alcuni casi, un produttore di dispositivi potrebbe voler preinstallare un'app per Android per supportare la funzionalità di base del dispositivo. Se ti interessa sviluppare app per Android, visita la pagina developers.android.com.
App con privilegi
Un'app creata utilizzando una combinazione di API di Android e di sistema. Queste app devono essere preinstallate come app privilegiate su un dispositivo.
App del produttore del dispositivo
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 viene aggiornato il software di sistema del dispositivo.
API di sistema
L'API System rappresenta le API Android disponibili solo per partner e OEM per l'inclusione in applicazioni in bundle. Queste API sono contrassegnate come @SystemApi nel codice sorgente.
API Android
L'API Android è l'API disponibile pubblicamente per gli sviluppatori di app Android di terze parti. Per informazioni sull'API Android, consulta il riferimento all'API Android.
Framework Android
Un gruppo di classi, interfacce e altro codice precompilato Java su cui vengono create le app. Alcune parti del framework sono accessibili pubblicamente tramite l'uso dell'API Android. Altre parti del framework sono disponibili solo per gli OEM tramite l'utilizzo delle API di sistema. Il codice framework di Android viene eseguito all'interno del processo di un'app.
Servizi di sistema
I servizi di sistema sono componenti modulari e specifici come system_server, SurfaceFlinger e MediaService. La funzionalità esposta dall'API Android Framework comunica con i servizi di sistema per accedere all'hardware sottostante.
Runtime Android (ART)
Un ambiente di runtime Java fornito da AOSP. ART esegue la traduzione del bytecode dell'app in istruzioni specifiche del processore che vengono eseguite dall'ambiente di runtime del dispositivo.
Hardware Abstraction Layer (HAL)
Un HAL è un livello di astrazione con un'interfaccia standard da implementare per i fornitori di hardware. Gli HAL consentono ad Android di essere indipendente sulle implementazioni di driver di livello inferiore. L'utilizzo di un HAL ti consente di implementare la funzionalità senza influire o modificare il sistema di livello superiore. Per ulteriori informazioni, consulta la panoramica dell'HAL.
Daemon 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.

Gernel

Il kernel è la parte centrale di qualsiasi sistema operativo e 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, incluse le definizioni, dei componenti del kernel AOSP, consulta la Panoramica del kernel.

Passaggi successivi

  • Se non hai mai utilizzato AOSP e vuoi iniziare a sviluppare, consulta la sezione Inizia.
  • Se vuoi saperne di più su un livello specifico di AOSP, fai clic sul nome della sezione nel riquadro di navigazione a sinistra e inizia con la panoramica della sezione.