Directorios, reglas y políticas

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