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.
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Na tej stronie opisaliśmy układ katalogu na urządzeniach z Androidem 8.0 lub nowszym, reguły VNDK oraz powiązany sepolicy.
Układ katalogu
Zdegenerowany układ katalogu składa się z tych katalogów:
/system/lib[64] zawiera wszystkie współdzielone biblioteki platformy, w tym biblioteki LL-NDK, VNDK i tylko dla platformy (w tym LL-NDK-Private i niektóre biblioteki o tych samych nazwach co biblioteki VNDK-SP).
/system/lib[64]/vndk-sp zawiera biblioteki VNDK-SP dla interfejsów HAL w tym samym procesie.
/vendor/lib[64] zawiera biblioteki VNDK rozszerzone przez dostawcę (biblioteki DXUA lub DXUX VNDK), implementacje HAL w ramach tego samego procesu oraz inne biblioteki udostępnione przez dostawcę.
/vendor/lib[64]/vndk-sp może zawierać biblioteki VNDK-SP rozszerzone przez dostawcę.
Moduł dostawcy wczytuje biblioteki VNDK z /system/lib[64].
Reguły VNDK
W tej sekcji znajdziesz obszerną listę reguł VNDK:
Procesy platformy nie mogą wczytywać bibliotek współdzielonych innych niż SP-HAL z partycji dostawcy (ta zasada jest ściśle egzekwowana od Androida 8.1).
Procesy dostawcy nie mogą wczytywać z partycji systemowej bibliotek innych niż LL-NDK, VNDK-SP i VNDK. (nie jest to ściśle egzekwowane w przypadku Androida, ale będzie w przyszłej wersji).
Zainstalowane biblioteki VNDK muszą być podzbiorem bibliotek VNDK zdefiniowanych przez Google.
Zewnętrzne zależności bibliotek SP-HAL i SP-HAL-Dep muszą być ograniczone do bibliotek LL-NDK lub zdefiniowanych przez Google bibliotek VNDK-SP.
Zależność biblioteki współdzielonej SP-HAL musi być ograniczona do bibliotek LL-NDK, bibliotek VNDK-SP zdefiniowanych przez Google, innych bibliotek SP-HAL lub innych bibliotek współdzielonych dostawcy, które mogą być oznaczone jako biblioteki SP-HAL-Dep.
Biblioteka udostępniona dostawcy może być oznaczona jako biblioteka SP-HAL-Dep tylko wtedy, gdy nie jest to biblioteka AOSP i jej zależności są ograniczone do bibliotek LL-NDK, bibliotek VNDK-SP zdefiniowanych przez Google, bibliotek SP-HAL lub innych bibliotek SP-HAL-Dep.
VNDK-SP musi być samodzielny. libRS_internal.so jest traktowany w specjalny sposób w Androidzie 8.0, ale zostanie ponownie przeanalizowany w przyszłej wersji.
Brak komunikacji między frameworkiem a dostawcą za pomocą interfejsów innych niż HIDL, w tym między innymi binder, sockets, shared memories, files itp.
Rozmiar partycji systemowej musi być wystarczający, aby pomieścić 2 kopie wszystkich kwalifikujących się bibliotek VNDK oraz kopię niekwalifikujących się bibliotek współdzielonych frameworku.
sepolicy
Procesy dotyczące ram, opisane w tej sekcji, odpowiadają elementom coredomain w sepolicies, a procesy dostawcy odpowiadają elementom non-coredomain. Na przykład pola /dev/binder można używać tylko w przypadku pola coredomain, a pola /dev/vndbinder – tylko w przypadku pól niebędących coredomain.
Podobne zasady ograniczają dostęp do wspólnych bibliotek na partycjach systemowych i partycjach dostawcy. W tabeli poniżej przedstawiono prawa dostępu do współdzielonych bibliotek różnych kategorii:
Kategoria
Partycja
Dostępny z coredomain
Dostępny z domeny niebędącej domeną główną
LL-NDK
System
Y
Y
LL-NDK-Private
System
Y
Y
VNDK-SP/VNDK-SP-Private
System
Y
Y
VNDK-SP-Ext
Dostawca
Y
Y
VNDK
System
Y
Y
VNDK-Ext
Dostawca
N
Y
FWK-ONLY
System
Y
N
FWK-ONLY-RS
System
Y
N
SP-HAL
Dostawca
Y
Y
SP-HAL-Dep
Dostawca
Y
Y
VND-ONLY
Dostawca
N
Y
Ścieżki LL-NDK-Private i VNDK-SP-Private muszą być dostępne z obu domen, ponieważ użytkownicy spoza domeny coredomain będą mieli do nich dostęp pośrednio. Podobnie plik SP-HAL-Dep musi być dostępny z poziomu pliku coredomain, ponieważ plik SP-HAL na nim polega.
etykieta same_process_hal_file
Na partycji dostawcy znajdują się następujące biblioteki: Ustaw dostęp do tych bibliotek zarówno dla użytkowników z uprawnieniamicoredomain, jak i bez nichcoredomain.
VNDK-SP-Ext w /vendor/lib[64]/vndk-sp
SP-HAL w /vendor/lib[64] lub /vendor/lib[64]/hw
SP-HAL-Dep w /vendor/lib[64] lub /vendor/lib[64]/hw
Te pliki muszą być wyraźnie oznaczone jako same_process_hal_file, ponieważ wszystko na partycji vendor jest domyślnie niedostępne dla coredomain. Dodaj do pliku file_contexts odpowiednie wiersze, podobne do tych:
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,["# Directories, rules, and sepolicy\n\nThis page describes the directory layout for devices running Android 8.0 and\nhigher, VNDK rules, and associated sepolicy.\n\nDirectory layout\n----------------\n\nThe *Degenerated Directory Layout* consists of the following\ndirectories:\n\n- `/system/lib[64]` contains all framework shared libraries, including LL-NDK, VNDK, and framework-only libraries (including LL-NDK-Private and some libraries with the same names as the ones in VNDK-SP).\n- `/system/lib[64]/vndk-sp` contains VNDK-SP libraries for same-process HALs.\n- `/vendor/lib[64]` contains the VNDK libraries extended by the vendor (either DXUA or DXUX VNDK libraries), same-process HAL implementations, and other vendor shared libraries.\n- `/vendor/lib[64]/vndk-sp` may contain the VNDK-SP libraries extended by the vendor.\n\nVendor modules load the VNDK libraries from `/system/lib[64]`.\n\nVNDK rules\n----------\n\nThis section provides a comprehensive list of VNDK rules:\n\n- Framework processes must not load non-SP-HAL shared libraries from vendor partitions (strictly enforced starting from Android 8.1).\n- Vendor processes must not load non-LL-NDK, non-VNDK-SP, and non-VNDK libraries from the system partition. (not strictly enforced in Android O but will be in a future release).\n| **Note**: To benefit from the framework-only OTA beyond Android 8.0, this rule must not be violated in devices launched with Android 8.0.\n- Installed VNDK libraries must be a subset of Google-defined eligible VNDK libraries.\n- The outer dependencies of SP-HAL and SP-HAL-Dep must be restricted to LL-NDK or Google-defined VNDK-SP libraries.\n - The dependencies of an SP-HAL shared library must be restricted to LL-NDK libraries, Google-defined VNDK-SP libraries, other SP-HAL libraries, and/or other vendor shared libraries that can be labeled as SP-HAL-Dep libraries.\n - A vendor shared library can be labeled as a SP-HAL-Dep library only if it is not an AOSP library and its dependencies are restricted to LL-NDK libraries, Google-defined VNDK-SP libraries, SP-HAL libraries, and/or other SP-HAL-Dep libraries.\n- VNDK-SP must be self-contained. `libRS_internal.so` gets special treatment in Android 8.0, but will be revisited in a future release.\n- No framework-vendor communication through non-HIDL interfaces, including (but not limited to) binder, sockets, shared memories, files, etc.\n- The size of the system partition must be large enough to contain two copies of all eligible VNDK libraries and a copy of ineligible framework shared libraries.\n\nsepolicy\n--------\n\nFramework processes described in this section correspond to\n`coredomain` in sepolicies while vendor processes correspond to\n`non-coredomain`. For example, `/dev/binder` can be\naccessed only in `coredomain` and `/dev/vndbinder` can be\naccessed only in non-`coredomain`.\n\nSimilar policies restrict the access to the shared libraries on system and\nvendor partitions. The following table shows the rights to access shared\nlibraries of different categories:\n\n| Category | Partition | Accessible from coredomain | Accessible from non-coredomain |\n|-------------------------|-----------|----------------------------|--------------------------------|\n| LL-NDK | System | Y | Y |\n| LL-NDK-Private | System | Y | Y |\n| VNDK-SP/VNDK-SP-Private | System | Y | Y |\n| VNDK-SP-Ext | Vendor | Y | Y |\n| VNDK | System | Y | Y |\n| VNDK-Ext | Vendor | N | Y |\n| FWK-ONLY | System | Y | N |\n| FWK-ONLY-RS | System | Y | N |\n| SP-HAL | Vendor | Y | Y |\n| SP-HAL-Dep | Vendor | Y | Y |\n| VND-ONLY | Vendor | N | Y |\n\nLL-NDK-Private and VNDK-SP-Private must be\naccessible from both domains because non-`coredomain` will\nindirectly access them. Similarly, SP-HAL-Dep must be accessible from\n`coredomain` because SP-HAL relies on it.\n\nsame_process_hal_file label\n---------------------------\n\nThe following libraries exist in the vendor partition. Make these libraries accessible from both\n`coredomain` and non-`coredomain`.\n\n- VNDK-SP-Ext in `/vendor/lib[64]/vndk-sp`\n- SP-HAL in `/vendor/lib[64]` or `/vendor/lib[64]/hw`\n- SP-HAL-Dep in `/vendor/lib[64]` or `/vendor/lib[64]/hw`\n\nExplicitly label these files as `same_process_hal_file`, because anything\nin `vendor` partition is by default not accessible to `coredomain`. Add lines similar to\nthe following to the vendor-specific `file_contexts` file. \n\n```scdoc\n/vendor/lib(64)?/hw/libMySpHal\\.so u:object_r:same_process_hal_file:s0\n/vendor/lib(64)?/vndk-sp/libBase\\.so u:object_r:same_process_hal_file:s0\n/vendor/lib(64)?/libBaseInternal\\.so u:object_r:same_process_hal_file:s0\n```"]]