À partir du 27 mars 2025, nous vous recommandons d'utiliser android-latest-release
au lieu de aosp-main
pour créer et contribuer à AOSP. Pour en savoir plus, consultez la section Modifications apportées à AOSP.
Présentation du Framework de virtualisation Android (AVF)
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Le framework de virtualisation Android (AVF) fournit des environnements d'exécution sécurisés et privés pour l'exécution de code. L'AVF est idéal pour les cas d'utilisation axés sur la sécurité qui nécessitent des garanties d'isolation plus strictes, voire formellement validées, que celles proposées par le bac à sable d'applications Android. Android fournit une implémentation de référence de tous les composants nécessaires à l'implémentation d'AVF. L'AVF n'est compatible qu'avec les appareils ARM64. La figure 1 illustre l'architecture d'AVF :
Figure 1 : Architecture AVF.
Vous trouverez ci-dessous les définitions des termes les plus importants de la figure 1 :
- apexd et zipfuse
- Montage sécurisé des APEX et des APK importés depuis l'hôte.
- authfs
- Système de fichiers Fuse permettant de partager de manière sécurisée plusieurs fichiers entre Android et la pVM (hôte et invité).
- liage
- Moyen principal de communication entre les VM.
- crosvm
- Moniteur de machine virtuelle écrit en Rust. crosvm alloue de la mémoire de VM, crée des threads de processeur virtuels et implémente les backends de l'appareil virtuel.
- Image du noyau générique (GKI)
- Image de démarrage certifiée par Google qui contient un noyau GKI créé à partir d'un arbre de sources du noyau commun Android (ACK) et qui peut être flashée sur la partition de démarrage d'un appareil Android. Pour en savoir plus, consultez la présentation du kernel.
- hyperviseur
- Technologie de virtualisation utilisée par AVF, également appelée pKVM. Le hyperviseur préserve l'intégrité du code exécuté et la confidentialité des composants de la pVM, même si Android hôte ou l'une des autres pVM sont compromis.
- API Java
- Les API Java VirtualizationService, qui ne sont présentes que sur les appareils compatibles avec AVF. Ces API sont facultatives et ne font pas partie de
thebootclasspath
.
- Microdroid
- Mini-OS Android fourni par Google qui s'exécute dans une pVM.
- Microdroid Manager
- Gère le cycle de vie de la pVM, dans la pVM et sur le disque de l'instance.
- API native
- Sous-ensemble du kit de développement natif Android (NDK).
- Machine virtuelle basée sur le noyau protégée (pKVM)
- Voir Hyperviseur.
- Micrologiciel pVM (
pvmfw
)
- Le premier code exécuté sur une pVM,
pvmfw
, vérifie la charge utile et dérive le secret par VM.
- machine virtuelle protégée (pVM)
Environnement d'exécution isolé (invité) mutuellement méfiant qui s'exécute avec le système d'exploitation Android principal (hôte). Un aspect important de la sécurité des pVM est que même si l'hôte est compromis, il n'a pas accès à la mémoire d'une pVM. pKVM est l'hyperviseur standard pour exécuter des pVM.
Par rapport aux environnements d'exécution sécurisés (TEE) existants, les pVM offrent un environnement plus riche, y compris la possibilité d'exécuter une mini-distribution Android appelée Microdroid (bien que Microdroid puisse également s'exécuter sur une VM non protégée). Les pVM peuvent être utilisées de manière dynamique et fournissent un ensemble standard d'API dans un environnement sécurisé disponible sur tous les appareils compatibles.
- VirtualizationService
Service Android qui gère le cycle de vie des pVM.
Et maintenant ?
- Pour mieux comprendre la nécessité d'AVF, consultez Pourquoi AVF ?.
- Pour découvrir comment l'AVF peut être utilisé pour la compilation isolée, consultez la section Cas d'utilisation.
- Pour une explication plus détaillée de l'architecture de l'implémentation de référence d'AVF, consultez la section Architecture AVF.
- Pour en savoir plus sur Microdroid, consultez Microdroid.
- Pour en savoir plus sur la façon dont AVF gère la sécurité, consultez la section Sécurité.
- Pour comprendre le rôle du service de virtualisation, consultez VirtualizationService.
- Pour obtenir le code source d'AVF ou une explication détaillée des différents composants, consultez le dépôt AOSP.
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/27 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 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)"]]