A partire dal 27 marzo 2025, ti consigliamo di utilizzare android-latest-release
anziché aosp-main
per compilare e contribuire ad AOSP. Per ulteriori informazioni, vedi Modifiche ad AOSP.
Panoramica del Framework di virtualizzazione di Android (AVF)
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Android Virtualization Framework (AVF) fornisce ambienti di esecuzione sicuri e privati per l'esecuzione del codice. L'AVF è ideale per i casi d'uso incentrati sulla sicurezza
che richiedono garanzie di isolamento più stringenti, anche 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 su 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 gli APEX e gli APK importati dall'host.
- authfs
- Un file system Fuse per condividere in sicurezza più file tra Android e la VM paravirtualizzata (host e guest).
- binder
- Mezzo principale di comunicazione tra VM.
- crosvm
- Un monitor delle macchine virtuali scritto in Rust. crosvm alloca la memoria della VM,
crea thread della CPU virtuale e implementa i back-end 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 Android Common Kernel (ACK) ed è idonea per essere trasferita alla 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 VM privata, anche se Android host o una delle altre VM private sono compromessi.
- API Java
- Le API Java VirtualizationService, presenti solo sui dispositivi con supporto AVF. Queste API sono facoltative e non fanno parte di
thebootclasspath
.
- Microdroid
- Un sistema operativo mini-Android fornito da Google che viene eseguito in una pVM.
- Microdroid Manager
- Gestisce il ciclo di vita della VM privata, all'interno della VM privata e del disco dell'istanza.
- API nativa
- Un sottoinsieme del Native Development Kit (NDK) per Android.
- Macchina virtuale basata su kernel protetta (pKVM)
- Consulta Hypervisor.
- Firmware della pVM (
pvmfw
)
- Il primo codice eseguito su una pVM,
pvmfw
verifica il payload e ricava il segreto per VM.
- macchina virtuale protetta (pVM)
Un ambiente di esecuzione isolato (guest) non attendibile reciprocamente 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 distribuzione mini-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
- Per comprendere meglio la necessità di AVF, consulta
Perché AVF?.
- Per scoprire come AVF può essere utilizzato per la compilazione isolata, consulta
Casi d'uso.
- Per una spiegazione più approfondita dell'architettura dell'implementazione di riferimento AVF, consulta Architettura AVF.
- Per scoprire di più su Microdroid, consulta Microdroid.
- Se ti interessa sapere in che modo 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 approfondita dei singoli componenti, consulta il repository AOSP.
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-07-27 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-07-27 UTC."],[],[],null,["# Android Virtualization Framework (AVF) overview\n\n*Android Virtualization Framework (AVF)* provides secure and private execution\nenvironments for executing code. AVF is ideal for security-oriented use cases\nthat require stronger, even formally verified, isolation assurances over those\noffered by Android's app sandbox. Android provides a reference implementation\nof all the components needed to implement AVF. AVF is supported only\non ARM64 devices. Figure 1 shows the architecture of AVF:\n\n**Figure 1.** AVF architecture.\n\nHere are the definitions for the most important terms from figure 1:\n\n*apexd and zipfuse*\n: Securely mounts APEXes and APKs imported from host.\n\n*authfs*\n: A fuse file system for securely sharing multiple files between Android and pVM\n (host and guest).\n\n*binder*\n: Primary means of inter-VM communication.\n\n*crosvm*\n: A virtual machine monitor written in rust. crosvm allocates VM memory,\n creates virtual CPU threads, and implements the virtual device's back-ends.\n\n*Generic Kernel Image (GKI)*\n: A boot image certified by Google that contains a GKI kernel built from an\n Android Common Kernel (ACK) source tree and is suitable to be flashed to the\n boot partition of an Android device. For further information, see the [Kernel\n overview](/docs/core/architecture/kernel).\n\n*hypervisor*\n: The virtualization technology used by AVF, also known as *pKVM*. The\n hypervisor maintains the integrity of the executed code and confidentiality of\n the pVM's assets, even if host Android or any of the other pVMs are compromised.\n\n*Java API*\n: The VirtualizationService Java APIs, which are present only on devices with\n AVF support. These APIs are optional and not part of `thebootclasspath`.\n\n*Microdroid*\n: A Google-provided mini-Android OS that runs in a pVM.\n\n*Microdroid Manager*\n: Manages the pVM lifecycle, inside the pVM, and instance disk.\n\n*Native API*\n: A subset of the Android Native Developers Kit (NDK).\n\n*protected kernel-based virtual machine (pKVM)*\n: See [Hypervisor](#hyper).\n\n*pVM firmware (`pvmfw`)*\n: The first code that runs on a pVM, `pvmfw` verifies the payload and derives\n the per-VM secret.\n\n*protected virtual machine (pVM)*\n\n: A mutually distrusted isolated execution environment (*guest* ) that runs\n alongside the main Android operating system (*host*). One important aspect of\n pVM security is even if the host is compromised, the host doesn't have access\n to a pVM's memory. pKVM is the standard hypervisor for running pVMs.\n\n Compared to existing trusted execution environments (TEEs), pVMs provide a\n richer environment, including the ability to run a mini-Android distribution\n called [Microdroid](#micro) (though Microdroid can also run on an\n unprotected VM). pVMs can be used dynamically and provide a\n standard set of APIs in a trusted environment available across all devices\n that support them.\n\n*VirtualizationService*\n\n: The Android service that manages the lifecycle of pVMs.\n\nWhat's next?\n------------\n\n- If you want to better understand the need for AVF, refer to [Why AVF?](/docs/core/virtualization/whyavf).\n- To read about how AVF can be used for isolated compilation, refer to [Use cases](/docs/core/virtualization/usecases).\n- If you want a more in-depth explanation of the AVF reference implementation's architecture, refer to [AVF architecture](/docs/core/virtualization/architecture).\n- If you want to learn about Microdroid, refer to [Microdroid](/docs/core/virtualization/microdroid).\n- If you are interested in how AVF handles security, refer to [Security](/docs/core/virtualization/security).\n- To understand the role of the virtualization service, refer to [VirtualizationService](/docs/core/virtualization/virtualization-service).\n- For source code of AVF or in-depth explanation about individual components, refer to [AOSP\n repository](https://android.googlesource.com/platform/packages/modules/Virtualization/+/refs/heads/main)"]]