A partir de 27 de março de 2025, recomendamos usar android-latest-release
em vez de aosp-main
para criar e contribuir com o AOSP. Para mais informações, consulte Mudanças no AOSP.
Visão geral do Framework de virtualização do Android (AVF)
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
O Framework de virtualização do Android (AVF, na sigla em inglês) oferece ambientes de execução seguros
e particulares para executar códigos. O AVF é ideal para casos de uso orientados à segurança
que exigem garantias de isolamento mais fortes e verificação formal, diferentes do que é
oferecido pelo sandbox de apps do Android. O Android oferece uma implementação de referência
de todos os componentes necessários para implementar o AVF. A AVF só é compatível
com dispositivos ARM64. A Figura 1 mostra a arquitetura da AVF:
Figura 1. Arquitetura AVF.
Confira as definições dos termos mais importantes da Figura 1:
- apexd e zipfuse
- Monta com segurança os APEXes e APKs importados do host.
- authfs
- Um sistema de arquivos de fusível para compartilhar com segurança vários arquivos entre o Android e a pVM
(host e convidado).
- binder (link em inglês)
- Meio principal de comunicação entre VMs.
- crosvm
- Um monitor de máquina virtual escrito em Rust. O crosvm aloca a memória da VM,
cria linhas de execução de CPU virtual e implementa os back-ends do dispositivo virtual.
- Imagem genérica do kernel (GKI)
- Uma imagem de inicialização certificada pelo Google que contém um kernel GKI criado a partir de uma
árvore de origem do kernel comum do Android (ACK, na sigla em inglês) e é adequada para ser flasheada para a
partição de inicialização de um dispositivo Android. Para mais informações, consulte a Visão geral
do kernel.
- hipervisor
- A tecnologia de virtualização usada pela AVF, também conhecida como pKVM. O
hipervisor mantém a integridade do código executado e a confidencialidade dos
recursos da pVM, mesmo que o host Android ou qualquer uma das outras pVMs estejam comprometidos.
- API Java
- As APIs Java do VirtualizationService, que estão presentes apenas em dispositivos com
suporte ao AVF. Essas APIs são opcionais e não fazem parte de
thebootclasspath
.
- Microdroid
- Um mini-SO Android fornecido pelo Google que é executado em uma pVM.
- Microdroid Manager
- Gerencia o ciclo de vida da pVM, dentro da pVM e do disco de instância.
- API nativa
- Um subconjunto do Android Native Developers Kit (NDK).
- máquina virtual baseada em kernel protegida (pKVM)
- Consulte Hipervisor.
- Firmware de pVM (
pvmfw
)
- O primeiro código executado em uma pVM,
pvmfw
, verifica o payload e extrai
o segredo por VM.
- máquina virtual protegida (pVM, na sigla em inglês)
Um ambiente de execução isolado mutuamente não confiável (guest) que é executado
com o sistema operacional Android principal (host). Um aspecto importante da
segurança de pVMs é que, mesmo que o host seja comprometido, ele não tem acesso
à memória de uma pVM. O pKVM é o hipervisor padrão para executar pVMs.
Em comparação com os ambientes de execução confiáveis (TEEs) atuais, as pVMs oferecem um
ambiente mais rico, incluindo a capacidade de executar uma distribuição mini-Android
chamada Microdroid. No entanto, o Microdroid também pode ser executado em uma
VM não protegida. As pVMs podem ser usadas de forma dinâmica e oferecem um
conjunto padrão de APIs em um ambiente confiável disponível em todos os dispositivos
que oferecem suporte a elas.
- VirtualizationService
O serviço do Android que gerencia o ciclo de vida das pVMs.
Quais são as próximas etapas?
- Para entender melhor a necessidade de uma AVF, consulte
Por que usar uma AVF?.
- Para saber como o AVF pode ser usado para compilação isolada, consulte
Casos de uso.
- Para uma explicação mais detalhada da arquitetura da implementação de referência do AVF, consulte Arquitetura do AVF.
- Para saber mais sobre o Microdroid, consulte Microdroid.
- Se você tem interesse em saber como o AVF lida com a segurança, consulte
Segurança.
- Para entender o papel do serviço de virtualização, consulte
VirtualizationService.
- Para o código-fonte do AVF ou uma explicação detalhada sobre componentes individuais,
consulte o repositório
AOSP.
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 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)"]]