En esta página, se describe el diseño de directorio para dispositivos con Android 8.0 y versiones posteriores, reglas de VNDK y la política asociada.
Diseño de directorio
El diseño de directorio degenerado consta de los siguientes elementos: directorios:
/system/lib[64]
contiene todas las bibliotecas compartidas del framework, incluidos LL-NDK, VNDK y bibliotecas exclusivas del framework (incluidas las LL-NDK-Private y algunas bibliotecas con los mismos nombres que la en VNDK-SP)./system/lib[64]/vndk-sp
contiene bibliotecas VNDK-SP para de una HAL del mismo proceso./vendor/lib[64]
contiene las bibliotecas de VNDK que extendió el proveedor (ya sea las bibliotecas DXUA o DXUX de VNDK), implementaciones de HAL del mismo proceso y otros proveedores las bibliotecas compartidas./vendor/lib[64]/vndk-sp
puede contener las bibliotecas VNDK-SP extendidas por el con el proveedor de servicios en la nube.
Los módulos de proveedores cargan las bibliotecas de VNDK desde /system/lib[64]
.
Reglas del VNDK
En esta sección, se proporciona una lista completa de las reglas del VNDK:
- Los procesos del framework no deben cargar bibliotecas compartidas que no sean de SP-HAL del proveedor. particiones (aplicadas de manera estricta a partir de Android 8.1).
- Los procesos del proveedor no deben cargar elementos que no sean de LL-NDK, VNDK-SP ni que no pertenecen al VNDK de la partición del sistema. (no se aplica estrictamente en Android O, pero lo estarán en una versión futura).
- Las bibliotecas del VNDK instaladas deben ser un subconjunto del VNDK apto definido por Google. bibliotecas.
- Las dependencias externas de SP-HAL y SP-HAL-Dep deben restringirse a
Bibliotecas LL-NDK o VNDK-SP definidas por Google
- Las dependencias de una biblioteca compartida SP-HAL deben restringirse a LL-NDK bibliotecas, bibliotecas de VNDK-SP definidas por Google, otras bibliotecas SP-HAL. otras bibliotecas compartidas de proveedores que se pueden etiquetar como SP-HAL-Dep bibliotecas.
- Una biblioteca compartida de un proveedor puede etiquetarse como biblioteca SP-HAL-Dep solo si no es una biblioteca del AOSP y sus dependencias están restringidas a bibliotecas LL-NDK, Bibliotecas de VNDK-SP, bibliotecas de SP-HAL o cualquier otro tipo de SP-HAL-Dep definido por Google bibliotecas.
- VNDK-SP debe ser independiente.
libRS_internal.so
es especial tratamiento en Android 8.0, pero se volverá a visitar en una versión futura. - No hay comunicación entre proveedores del framework a través de interfaces que no sean HIDL, lo que incluye (entre otros) Binder, sockets, memorias compartidas, archivos, etcétera.
- El tamaño de la partición del sistema debe ser lo suficientemente grande como para contener dos copias de todas las bibliotecas del VNDK aptas y se comparte una copia del marco no apto bibliotecas.
política de seguridad
Los procesos del framework descritos en esta sección corresponden a
coredomain
en sepolicies, mientras que los procesos del proveedor corresponden a
non-coredomain
Por ejemplo, /dev/binder
puede ser
a las que solo se accede en coredomain
y /dev/vndbinder
a las que solo se accede en redes que no son coredomain
.
Políticas similares restringen el acceso a las bibliotecas compartidas en el sistema particiones del proveedor. En la siguiente tabla, se muestran los derechos de acceso compartidos bibliotecas de diferentes categorías:
Categoría | Partición | Accesible desde Coredomain |
Accesible desde dominio no principal |
---|---|---|---|
LL-NDK | Sistema | S | S |
LL-NDK-Privado | Sistema | S | S |
VNDK-SP/VNDK-SP-Privado | Sistema | S | S |
Extensión de VNDK-SP | Proveedor | S | S |
VNDK | Sistema | S | S |
Extensión del VNDK | Proveedor | N | S |
SOLO PARA FWK | Sistema | S | N |
SOLO FWK-RS | Sistema | S | N |
HAL del SP | Proveedor | S | S |
SP-HAL-Dep | Proveedor | S | S |
SOLO VND | Proveedor | N | S |
LL-NDK-Private y VNDK-SP-Private deben ser
accesible desde ambos dominios porque los usuarios que no sean coredomain
accedan a ellos de forma indirecta. Del mismo modo, se debe poder acceder a SP-HAL-Dep desde
coredomain
porque SP-HAL se basa en él.
etiqueta same_process_hal_file
Las siguientes bibliotecas existen en la partición del proveedor. Haz que estas bibliotecas sean accesibles desde ambos
coredomain
y que no son coredomain
.
- VNDK-SP-Ext en
/vendor/lib[64]/vndk-sp
- SP-HAL en
/vendor/lib[64]
o/vendor/lib[64]/hw
- SP-HAL-Dep en
/vendor/lib[64]
o/vendor/lib[64]/hw
Etiqueta explícitamente estos archivos como same_process_hal_file
, porque cualquier cosa
En la partición vendor
, coredomain
no puede acceder de forma predeterminada. Agregar líneas similares a
lo siguiente al archivo file_contexts
específico del proveedor.
/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