Od 27 marca 2025 r. zalecamy używanie android-latest-release
zamiast aosp-main
do kompilowania i wspołtworzenia AOSP. Więcej informacji znajdziesz w artykule o zmianach w AOSP.
Omówienie platformy Android Virtualization Framework (AVF)
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Platforma wirtualizacji Androida (AVF) zapewnia bezpieczne i prywatne środowisko wykonywania kodu. AVF jest idealny do zastosowań związanych z bezpieczeństwem, które wymagają silniejszej, nawet formalnie zweryfikowanej izolacji niż ta oferowana przez piaskownicę aplikacji na Androida. Android udostępnia implementację referencyjną wszystkich komponentów potrzebnych do implementacji AVF. AVF jest obsługiwana tylko na urządzeniach z architekturą ARM64. Rysunek 1 przedstawia architekturę AVF:
Rysunek 1. Architektura AVF
Oto definicje najważniejszych terminów z rysunku 1:
- apexd i zipfuse
- Bezpiecznie montuje pliki APEX i pliki APK zaimportowane z hosta.
- authfs
- System plików fuse do bezpiecznego udostępniania wielu plików między Androidem a pVM (host i gościn).
- zszywacz
- Główny sposób komunikacji między maszynami wirtualnymi.
- crosvm
- Monitor maszyny wirtualnej napisany w rust. crosvm przydziela pamięć maszynie wirtualnej, tworzy wątki wirtualnego procesora i wdraża zaplecze wirtualnego urządzenia.
- Generic Kernel Image (GKI)
- Obrazek rozruchowy certyfikowany przez Google, który zawiera jądro GKI utworzone na podstawie drzewa źródłowego Android Common Kernel (ACK) i jest odpowiedni do zaflashowania na partycji rozruchowej urządzenia z Androidem. Więcej informacji znajdziesz w omówieniu jądra.
- hypervisor
- Technologia wirtualizacji używana przez AVF, znana również jako pKVM. Hiperwizor zapewnia integralność wykonywanego kodu i poufność zasobów pVM, nawet jeśli host Android lub którykolwiek z innych pVM został naruszony.
- Java API
- Interfejsy API VirtualizationService w języku Java, które są dostępne tylko na urządzeniach z obsługą AVF. Te interfejsy API są opcjonalne i nie są częścią
thebootclasspath
.
- Microdroid
- Minisystem operacyjny Android udostępniany przez Google, który działa w pVM.
- Menedżer Microdroid
- Zarządza cyklem życia pVM w pVM i dysku instancji.
- Natywna wersja interfejsu API
- Podzbiór pakietu Native Development Kit (NDK) na Androida.
- chroniona maszyna wirtualna z jądrem (pKVM)
- Zobacz Hypervisor.
- Firmware pVM (
pvmfw
)
- Pierwszy kod, który działa na pVM,
pvmfw
weryfikuje ładunek i wyprowadza tajny klucz dla danej maszyny wirtualnej.
- chroniona maszyna wirtualna (pVM)
wzajemnie nieufne odizolowane środowisko wykonawcze (gost), które działa obok głównego systemu operacyjnego Android (gospodarz). Jednym z ważnych aspektów zabezpieczeń pVM jest to, że nawet jeśli host zostanie skompromitowany, nie będzie miał dostępu do pamięci pVM. pKVM to standardowy hypervisor do uruchamiania pVM.
W porównaniu z dotychczasowymi zaufanymi środowiskami wykonawczymi (TEE) maszyny wirtualne z dostępem do sieci zapewniają bogatsze środowisko, w tym możliwość uruchamiania dystrybucji mini-Androida o nazwie Microdroid (chociaż Microdroid może też działać na niezabezpieczonej maszynie wirtualnej). Maszyny wirtualne z dostępem do sieci można wykorzystywać dynamicznie. Zapewniają one standardowy zestaw interfejsów API w zaufanym środowisku dostępnym na wszystkich urządzeniach, które je obsługują.
- VirtualizationService
Usługa na Androida, która zarządza cyklem życia pVM.
Co dalej?
- Jeśli chcesz dowiedzieć się więcej o potrzebie stosowania AVF, przeczytaj artykuł Dlaczego warto korzystać z AVF?.
- Więcej informacji o używaniu AVF do kompilacji odizolowanej znajdziesz w sekcji Przypadki użycia.
- Jeśli chcesz dowiedzieć się więcej o architekturze implementacji referencyjnej AVF, zapoznaj się z artykułem Architektura AVF.
- Więcej informacji o Microdroid znajdziesz w artykule Microdroid.
- Jeśli chcesz się dowiedzieć, jak AVF radzi sobie z bezpieczeństwem, zapoznaj się z artykułem Bezpieczeństwo.
- Aby dowiedzieć się, jaką rolę pełni usługa wirtualizacji, zapoznaj się z artykułem VirtualizationService.
- Kod źródłowy AVF lub szczegółowe informacje o poszczególnych komponentach znajdziesz w repozytorium AOSP.
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-27 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 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)"]]