Na tej stronie znajduje się opis układu katalogu na urządzeniach z Androidem 8.0 oraz reguły VNDK i powiązane reguły sepolicy.
Układ katalogu
Zniekształcony układ katalogu składa się z tych elementów: katalogi:
/system/lib[64]
zawiera wszystkie biblioteki współdzielone platformy, w tym biblioteki LL-NDK, VNDK oraz biblioteki oparte wyłącznie na platformie (w tym LL-NDK-Private i niektóre biblioteki o takich samych nazwach jak tych w VNDK-SP)./system/lib[64]/vndk-sp
zawiera biblioteki VNDK-SP dla listy HAL oparte na tym samym procesie./vendor/lib[64]
zawiera biblioteki VNDK rozszerzone przez dostawcę ( biblioteki DXUA i DXUX VNDK), implementacje HAL w tym samym procesie i inne usługi biblioteki udostępnione./vendor/lib[64]/vndk-sp
może zawierać biblioteki VNDK-SP rozszerzone przez dostawcy.
Moduły dostawcy ładują biblioteki VNDK z serwera /system/lib[64]
.
Reguły VNDK
Ta sekcja zawiera pełną listę reguł VNDK:
- Procesy platformy nie mogą wczytywać bibliotek udostępnionych innych niż SP-HAL od dostawcy i partycji (jest egzekwowane ściśle od Androida 8.1).
- Procesy dostawcy nie mogą wczytywać plików innych niż LL-NDK, VNDK-SP ani biblioteki inne niż VNDK z partycji systemowej. (nie jest egzekwowane w Androidzie, O, ale funkcja będzie dostępna w przyszłej wersji).
- Zainstalowane biblioteki VNDK muszą być podzbiorem zdefiniowanej przez Google kwalifikującej się biblioteki VNDK biblioteki.
- Zależności zewnętrzne SP-HAL i SP-HAL-Dep muszą być ograniczone do
LL-NDK lub zdefiniowane przez Google biblioteki VNDK-SP.
- Zależności biblioteki współdzielonej SP-HAL muszą być ograniczone do LL-NDK bibliotek, zdefiniowanych przez Google bibliotek VNDK-SP, innych bibliotek SP-HAL lub inne biblioteki udostępnione dostawców, które mogą być oznaczone jako SP-HAL-Dep. biblioteki.
- Biblioteka udostępniona przez dostawcę może zostać oznaczona jako biblioteka SP-HAL-Dep tylko wtedy, gdy nie jest biblioteką AOSP, a jej zależności są ograniczone do bibliotek LL-NDK, Zdefiniowane przez Google biblioteki VNDK-SP, biblioteki SP-HAL i/lub inne biblioteki SP-HAL-Dep biblioteki.
- VNDK-SP musi być autonomiczne.
libRS_internal.so
staje się wyjątkowy , ale zostaną ponownie wykorzystane w kolejnej wersji. - Brak komunikacji z dostawcami platformy za pomocą interfejsów innych niż HIDL, w tym segregatory, gniazda, udostępnione wspomnienia, pliki itp.
- Rozmiar partycji systemowej musi być wystarczająco duży, by pomieścić dwie kopie wszystkich kwalifikujących się bibliotek VNDK oraz udostępniona kopia nieodpowiedniej platformy biblioteki.
Sepolicy
Procesy platformy opisane w tej sekcji odpowiadają
coredomain
w sepolicies, podczas gdy procesy dostawcy odpowiadają
non-coredomain
Na przykład /dev/binder
to
dostęp jest możliwy tylko w coredomain
, a /dev/vndbinder
może być
dostępne tylko w domenach innych niż coredomain
.
Podobne zasady ograniczają dostęp do bibliotek udostępnionych w systemie na partycjach dostawcy. W tabeli poniżej znajdziesz uprawnienia dostępu do udostępnionych elementów biblioteki różnych kategorii:
Kategoria | Partycja | Dostępne z domeny głównej |
Dostępne spoza domeny podstawowej |
---|---|---|---|
LL-NDK | System | Y | Y |
LL-NDK – prywatne | System | Y | Y |
VNDK-SP/VNDK-SP-Prywatne | System | Y | Y |
VNDK-SP-wewn. | Dostawca | Y | Y |
VNDK | System | Y | Y |
VNDK-zewnętrzne | Dostawca | N | Y |
TYLKO WERSJA FWK | System | Y | N |
FWK-TYLKO-RS | System | Y | N |
SP-HAL | Dostawca | Y | Y |
SP-HAL-Dep | Dostawca | Y | Y |
TYLKO VND | Dostawca | N | Y |
LL-NDK-Private i VNDK-SP-Private muszą mieć wartość
dostępne w obu domenach, ponieważ domeny inne niż coredomain
nie zawsze uzyskują do nich dostęp. Natomiast SP-HAL-Dep musi być dostępny z
coredomain
, ponieważ bazuje na nim SP-HAL.
etykieta same_process_hal_file
Na partycji dostawcy istnieją następujące biblioteki. Udostępnij te biblioteki w
coredomain
i inne niż coredomain
.
- VNDK-SP-Ext w:
/vendor/lib[64]/vndk-sp
- SP-HAL w:
/vendor/lib[64]
lub/vendor/lib[64]/hw
- SP-HAL-Dep za
/vendor/lib[64]
lub/vendor/lib[64]/hw
Wyraźnie oznacz te pliki etykietą same_process_hal_file
, ponieważ wszystko
w partycji vendor
jest domyślnie niedostępną dla platformy coredomain
. Dodaj wiersze podobne do
poniżej do pliku file_contexts
odpowiedniego dostawcy.
/vendor/lib(64)?/hw/libMySpHal\.so u:object_r:same_process_hal_file:s0 /vendor/lib(64)?/vndk-sp/libBase\.so u:object_r:same_process_hal_file:s0 /vendor/lib(64)?/libBaseInternal\.so u:object_r:same_process_hal_file:s0