Android Virtualization Framework (AVF) fornisce ambienti di esecuzione sicuri e privati per l'esecuzione del codice. AVF è ideale per i casi d'uso orientati alla sicurezza che richiedono garanzie di isolamento più solide, persino verificate formalmente, rispetto a quelle offerte dalla sandbox delle app di Android. Android fornisce un'implementazione di riferimento di tutti i componenti necessari per implementare AVF. AVF è supportato solo sui dispositivi ARM64. La figura 1 mostra l'architettura di AVF:
 
Figura 1. Architettura AVF.
Di seguito sono riportate le definizioni dei termini più importanti della figura 1:
- apexd e zipfuse
 - Monta in modo sicuro APEX e APK importati dall'host.
 - authfs
 - Un file system FUSE per condividere in modo sicuro più file tra Android e pVM (host e guest).
 - binder
 - Mezzo principale di comunicazione tra le VM.
 - crosvm
 - Un monitor delle macchine virtuali scritto in Rust. crosvm alloca la memoria della VM, crea thread CPU virtuali e implementa i backend del dispositivo virtuale.
 - Generic Kernel Image (GKI)
 - Un'immagine di avvio certificata da Google che contiene un kernel GKI creato da un albero di origine del kernel comune Android (ACK) ed è adatta per essere flashata nella partizione di avvio di un dispositivo Android. Per ulteriori informazioni, consulta la panoramica del kernel.
 - hypervisor
 - La tecnologia di virtualizzazione utilizzata da AVF, nota anche come pKVM. L'hypervisor mantiene l'integrità del codice eseguito e la riservatezza degli asset della pVM, anche se Android host o una delle altre pVM sono compromesse.
 - API Java
 - Le API Java di VirtualizationService, presenti solo sui dispositivi con
supporto di AVF. Queste API sono facoltative e non fanno parte di 
thebootclasspath. - Microdroid
 - Una versione ridotta del sistema operativo Android fornita da Google che viene eseguita in una pVM.
 - Microdroid Manager
 - Gestisce il ciclo di vita della pVM, all'interno della pVM e del disco dell'istanza.
 - API nativa
 - Un sottoinsieme dell'Android Native Developers Kit (NDK).
 - macchina virtuale basata sul kernel protetto (pKVM)
 - Vedi Hypervisor.
 - Firmware pVM (
pvmfw) - Il primo codice eseguito su una pVM, 
pvmfwverifica il payload e deriva il segreto per VM. - macchina virtuale protetta (pVM)
 Un ambiente di esecuzione isolato e reciprocamente non attendibile (guest) che viene eseguito insieme al sistema operativo Android principale (host). Un aspetto importante della sicurezza delle pVM è che, anche se l'host è compromesso, non ha accesso alla memoria di una pVM. pKVM è l'hypervisor standard per l'esecuzione delle pVM.
Rispetto ai Trusted Execution Environment (TEE) esistenti, le pVM forniscono un ambiente più ricco, inclusa la possibilità di eseguire una mini-distribuzione di Android chiamata Microdroid (anche se Microdroid può essere eseguito anche su una VM non protetta). Le pVM possono essere utilizzate in modo dinamico e forniscono un insieme standard di API in un ambiente attendibile disponibile su tutti i dispositivi che le supportano.
- VirtualizationService
 Il servizio Android che gestisce il ciclo di vita delle pVM.
Passaggi successivi
- Se vuoi comprendere meglio la necessità di AVF, consulta la sezione Perché AVF?.
 - Per informazioni su come AVF può essere utilizzato per la compilazione isolata, consulta la sezione Casi d'uso.
 - Se vuoi una spiegazione più approfondita dell'architettura dell'implementazione di riferimento di AVF, consulta Architettura di AVF.
 - Se vuoi saperne di più su Microdroid, consulta Microdroid.
 - Se ti interessa sapere come AVF gestisce la sicurezza, consulta la sezione Sicurezza.
 - Per comprendere il ruolo del servizio di virtualizzazione, consulta VirtualizationService.
 - Per il codice sorgente di AVF o una spiegazione dettagliata dei singoli componenti, consulta il repository AOSP.