Questa pagina descrive il layout della directory per i dispositivi che eseguono Android 8.0 e versioni successive, le regole VNDK e la sepolicy associata.
Disposizione delle directory
Il layout della directory degenerato è costituito dalle seguenti directory:
-
/system/lib[64]
contiene tutte le librerie condivise del framework, incluse LL-NDK, VNDK e le librerie solo framework (incluse LL-NDK-Private e alcune librerie con gli stessi nomi di quelle in VNDK-SP). -
/system/lib[64]/vndk-sp
contiene le librerie VNDK-SP per HAL dello stesso processo. -
/vendor/lib[64]
contiene le librerie VNDK estese dal fornitore (librerie VNDK DXUA o DXUX), implementazioni HAL dello stesso processo e librerie condivise di altri fornitori. -
/vendor/lib[64]/vndk-sp
può contenere le librerie VNDK-SP estese dal fornitore.
I moduli del fornitore caricano le librerie VNDK da /system/lib[64]
.
Regole VNDK
Questa sezione fornisce un elenco completo delle regole VNDK:
- I processi del framework non devono caricare librerie condivise non SP-HAL dalle partizioni del fornitore (applicate rigorosamente a partire da Android 8.1).
- I processi del fornitore non devono caricare librerie non LL-NDK, non VNDK-SP e non VNDK dalla partizione di sistema. (non applicato rigorosamente in Android O ma sarà in una versione futura).
- Le librerie VNDK installate devono essere un sottoinsieme delle librerie VNDK idonee definite da Google.
- Le dipendenze esterne di SP-HAL e SP-HAL-Dep devono essere limitate alle librerie LL-NDK o VNDK-SP definite da Google.
- Le dipendenze di una libreria condivisa SP-HAL devono essere limitate alle librerie LL-NDK, alle librerie VNDK-SP definite da Google, ad altre librerie SP-HAL e/o alle librerie condivise di altri fornitori che possono essere etichettate come librerie SP-HAL-Dep .
- Una libreria condivisa del fornitore può essere etichettata come libreria SP-HAL-Dep solo se non è una libreria AOSP e le sue dipendenze sono limitate alle librerie LL-NDK, alle librerie VNDK-SP definite da Google, alle librerie SP-HAL e/o altre librerie SP-HAL-Dep.
- VNDK-SP deve essere autonomo.
libRS_internal.so
riceve un trattamento speciale in Android 8.0, ma verrà rivisitato in una versione futura. - Nessuna comunicazione tra fornitore di framework tramite interfacce non HIDL, inclusi (ma non limitati a) raccoglitori, socket, memorie condivise, file, ecc.
- La dimensione della partizione di sistema deve essere sufficientemente grande da contenere due copie di tutte le librerie VNDK idonee e una copia delle librerie condivise del framework non idonee.
sepolicy
I processi framework descritti in questa sezione corrispondono a coredomain
nelle sepolicies mentre i processi del fornitore corrispondono a non-coredomain
. Ad esempio, è possibile accedere /dev/binder
solo nel coredomain
e /dev/vndbinder
solo nel coredomain
.
Politiche simili limitano l'accesso alle librerie condivise sulle partizioni di sistema e del fornitore. La tabella seguente mostra i diritti di accesso alle librerie condivise di diverse categorie:
Categoria | Partizione | Accessibile da coredominio | Accessibile da dominio non principale |
---|---|---|---|
LL-NDK | Sistema | Y | Y |
LL-NDK-Privato | Sistema | Y | Y |
VNDK-SP/VNDK-SP-Privato | Sistema | Y | Y |
VNDK-SP-est | Venditore | Y | Y |
VNDK | Sistema | Y | Y |
VNDK-Est | Venditore | N | Y |
SOLO FWK | Sistema | Y | N |
FWK-SOLO-RS | Sistema | Y | N |
SP-HAL | Venditore | Y | Y |
SP-HAL-Dip | Venditore | Y | Y |
SOLO VND | Venditore | N | Y |
LL-NDK-Private e VNDK-SP-Private devono essere accessibili da entrambi i domini perché il dominio non coredomain
vi accederà indirettamente. Allo stesso modo, SP-HAL-Dep deve essere accessibile da coredomain
perché SP-HAL si basa su di esso.
etichetta same_process_hal_file
Nella partizione del fornitore esistono le seguenti librerie. Rendi queste librerie accessibili sia coredomain
che da quello non coredomain
.
- VNDK-SP-Ext in
/vendor/lib[64]/vndk-sp
- SP-HAL in
/vendor/lib[64]
o/vendor/lib[64]/hw
- SP-HAL-Dep in
/vendor/lib[64]
o/vendor/lib[64]/hw
Etichetta esplicitamente questi file come same_process_hal_file
, perché qualsiasi cosa nella partizione vendor
non è accessibile per impostazione predefinita a coredomain
. Aggiungere righe simili alle seguenti al file file_contexts
specifico del fornitore.
/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