A partir del 27 de marzo de 2025, te recomendamos que uses android-latest-release
en lugar de aosp-main
para compilar y contribuir a AOSP. Para obtener más información, consulta Cambios en AOSP.
Descripción general de Android Virtualization Framework (AVF)
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Android Virtualization Framework (AVF) proporciona entornos de ejecución seguros y privados para ejecutar código. AVF es ideal para casos de uso orientados a la seguridad que requieren garantías de aislamiento más sólidas, incluso verificadas de forma formal, que las que ofrece la zona de pruebas de apps de Android. Android proporciona una implementación de referencia de todos los componentes necesarios para implementar AVF. AVF solo es compatible con dispositivos ARM64. En la Figura 1, se muestra la arquitectura de AVF:
Figura 1: Arquitectura de AVF
Estas son las definiciones de los términos más importantes de la Figura 1:
- apexd y zipfuse
- Ejecuta de forma segura la activación de APEX y APK importados desde el host.
- authfs
- Un sistema de archivos de Fuse para compartir de forma segura varios archivos entre Android y pVM (host y guest).
- binder
- Es el medio principal de comunicación entre VMs.
- crosvm
- Un monitor de máquina virtual escrito en Rust. crosvm asigna memoria a la VM, crea subprocesos de CPU virtuales y, además, implementa los extremos del dispositivo virtual.
- Imagen genérica del kernel (GKI)
- Es una imagen de arranque certificada por Google que contiene un kernel de GKI compilado a partir de un árbol de origen del kernel común de Android (ACK) y es adecuada para escribirse en la partición de arranque de un dispositivo Android. Para obtener más información, consulta la descripción general del kernel.
- hipervisor
- La tecnología de virtualización que usa AVF, también conocida como pKVM. El hipervisor mantiene la integridad del código ejecutado y la confidencialidad de los recursos de la pVM, incluso si se vulnera Android o cualquiera de las otras pVMs.
- API de Java
- Las APIs de Java de VirtualizationService, que solo están presentes en dispositivos compatibles con AVF Estas APIs son opcionales y no forman parte de
thebootclasspath
.
- Microdroid
- Un SO mini-Android proporcionado por Google que se ejecuta en una pVM.
- Microdroid Manager
- Administra el ciclo de vida de la pVM, dentro de la pVM y el disco de la instancia.
- API nativa
- Un subconjunto del kit de desarrollo nativo (NDK) de Android.
- máquina virtual protegida basada en el kernel (pKVM)
- Consulta Hipervisor.
- Firmware de pVM (
pvmfw
)
- El primer código que se ejecuta en una pVM,
pvmfw
, verifica la carga útil y deriva el secreto por VM.
- máquina virtual protegida (pVM)
Un entorno de ejecución aislado de confianza mutua (invitado) que se ejecuta junto con el sistema operativo Android principal (host). Un aspecto importante de la seguridad de las pVM es que, incluso si el host está comprometido, no tiene acceso a la memoria de una pVM. pKVM es el hipervisor estándar para ejecutar pVM.
En comparación con los entornos de ejecución confiables (TEE) existentes, las pVM proporcionan un entorno más rico, incluida la capacidad de ejecutar una distribución de mini-Android llamada Microdroid (aunque Microdroid también se puede ejecutar en una VM no protegida). Las pVM se pueden usar de forma dinámica y proporcionan un conjunto estándar de APIs en un entorno confiable disponible en todos los dispositivos que las admiten.
- VirtualizationService
Es el servicio de Android que administra el ciclo de vida de las pVM.
Próximos pasos
- Si quieres comprender mejor la necesidad de la AVF, consulta ¿Por qué AVF?.
- Para obtener información sobre cómo se puede usar AVF para la compilación aislada, consulta Casos de uso.
- Si deseas obtener una explicación más detallada de la arquitectura de la implementación de referencia de AVF, consulta Arquitectura de AVF.
- Si quieres obtener más información sobre Microdroid, consulta Microdroid.
- Si te interesa saber cómo controla la seguridad AVF, consulta Seguridad.
- Para comprender el rol del servicio de virtualización, consulta VirtualizationService.
- Para obtener el código fuente de AVF o una explicación detallada sobre los componentes individuales, consulta el repositorio de AOSP.
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-07-27 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 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)"]]