Katalogi, zasady i sepolityka

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Na tej stronie opisano układ katalogów dla urządzeń z systemem Android 8.0 lub nowszym, regułami VNDK i skojarzoną polityką seo.

Układ katalogu

Zdegenerowany układ katalogów składa się z następujących katalogów:

  • /system/lib[64] zawiera wszystkie biblioteki współdzielone frameworka, w tym LL-NDK, VNDK i biblioteki tylko dla frameworka (w tym LL-NDK-Private i niektóre biblioteki o takich samych nazwach jak te w VNDK-SP).
  • /system/lib[64]/vndk-sp zawiera biblioteki VNDK-SP dla warstw HAL tego samego procesu.
  • /vendor/lib[64] zawiera biblioteki VNDK rozszerzone przez dostawcę (biblioteki DXUA lub DXUX VNDK), implementacje HAL tego samego procesu oraz biblioteki współdzielone innych dostawców.
  • /vendor/lib[64]/vndk-sp może zawierać biblioteki VNDK-SP rozszerzone przez dostawcę.

Moduły dostawcy ładują biblioteki VNDK z /system/lib[64] .

Zasady VNDK

Ta sekcja zawiera wyczerpującą listę reguł VNDK:

  • Procesy platformy nie mogą ładować bibliotek współdzielonych innych niż SP-HAL z partycji dostawców (ściśle wymuszane, począwszy od systemu Android 8.1).
  • Procesy dostawcy nie mogą ładować bibliotek innych niż LL-NDK, innych niż VNDK-SP i innych niż VNDK z partycji systemowej. (nie jest to ściśle egzekwowane w Androidzie O, ale będzie w przyszłej wersji).
  • Zainstalowane biblioteki VNDK muszą stanowić podzbiór kwalifikujących się bibliotek VNDK zdefiniowanych przez Google.
  • Zewnętrzne zależności SP-HAL i SP-HAL-Dep muszą być ograniczone do bibliotek LL-NDK lub VNDK-SP zdefiniowanych przez Google.
    • Zależności biblioteki współdzielonej SP-HAL muszą być ograniczone do bibliotek LL-NDK, bibliotek VNDK-SP zdefiniowanych przez Google, innych bibliotek SP-HAL i/lub bibliotek współdzielonych innych dostawców, które mogą być oznaczone jako biblioteki SP-HAL-Dep .
    • Biblioteka współdzielona dostawcy może być oznaczona jako biblioteka SP-HAL-Dep tylko wtedy, gdy nie jest biblioteką AOSP, a jej zależności są ograniczone do bibliotek LL-NDK, bibliotek VNDK-SP zdefiniowanych przez Google, bibliotek SP-HAL i/lub inne biblioteki SP-HAL-Dep.
  • VNDK-SP musi być samowystarczalny. libRS_internal.so otrzymuje specjalne traktowanie w systemie Android 8.0, ale zostanie ponownie odwiedzone w przyszłej wersji.
  • Brak komunikacji z dostawcami frameworków przez interfejsy inne niż HiDL, w tym (ale nie tylko) binder, gniazda, współdzielone pamięci, pliki itp.
  • Rozmiar partycji systemowej musi być wystarczająco duży, aby pomieścić dwie kopie wszystkich kwalifikujących się bibliotek VNDK oraz kopię nieuprawnionych bibliotek współużytkowanych struktury.

sepolityka

Procesy frameworka opisane w tej sekcji odpowiadają coredomain w sepolicie, podczas gdy procesy dostawcy odpowiadają non-coredomain . Na przykład do /dev/binder można uzyskać dostęp tylko w coredomain , a /dev/vndbinder można uzyskać tylko w non coredomain .

Podobne zasady ograniczają dostęp do bibliotek współdzielonych na partycjach systemowych i partycji dostawcy. Poniższa tabela przedstawia prawa dostępu do bibliotek współdzielonych różnych kategorii:

Kategoria Przegroda Dostępne od
domena główna
Dostępne od
spoza domeny podstawowej
LL-NDK System Tak Tak
LL-NDK-Prywatne System Tak Tak
VNDK-SP/VNDK-SP-Prywatne System Tak Tak
VNDK-SP-Ext Sprzedawca Tak Tak
VNDK System Tak Tak
VNDK-Ext Sprzedawca N Tak
TYLKO FWK System Tak N
FWK-TYLKO-RS System Tak N
SP-HAL Sprzedawca Tak Tak
SP-HAL-Dep Sprzedawca Tak Tak
TYLKO VND Sprzedawca N Tak

LL-NDK-Private i VNDK-SP-Private muszą być dostępne z obu domen, ponieważ nie coredomain uzyska do nich pośredni dostęp. Podobnie SP-HAL-Dep musi być dostępny z coredomain , ponieważ SP-HAL na nim polega.

etykieta same_process_hal_file

Na partycji dostawcy znajdują się następujące biblioteki. Udostępnij te biblioteki zarówno z coredomain , jak i coredomain .

  • 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

Jawnie oznacz te pliki jako same_process_hal_file , ponieważ wszystko w partycji vendor jest domyślnie niedostępne dla coredomain . Dodaj wiersze podobne do poniższych do pliku file_contexts specyficznego dla 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