A partir del 27 de marzo de 2025, te recomendamos que uses android-latest-release en lugar de aosp-main para compilar y contribuir a AOSP. Para obtener más información, consulta Cambios en AOSP.
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
En esta página, se describe el diseño de directorios para dispositivos con Android 8.0 y versiones posteriores, las reglas de VNDK y la política de SE asociada.
Diseño del directorio
El diseño de directorio degenerado consta de los siguientes directorios:
/system/lib[64] contiene todas las bibliotecas compartidas del framework, incluidas las bibliotecas de LL-NDK, VNDK y solo de framework (incluidas LL-NDK-Private y algunas bibliotecas con los mismos nombres que las de VNDK-SP).
/system/lib[64]/vndk-sp contiene bibliotecas de VNDK-SP para HALs del mismo proceso.
/vendor/lib[64] contiene las bibliotecas de VNDK que extiende el proveedor (bibliotecas de VNDK DXUA o DXUX), implementaciones de HAL del mismo proceso y otras bibliotecas compartidas del proveedor.
/vendor/lib[64]/vndk-sp puede contener las bibliotecas de VNDK-SP que extendió el proveedor.
Los módulos del proveedor cargan las bibliotecas de VNDK desde /system/lib[64].
Reglas de VNDK
En esta sección, se proporciona una lista completa de las reglas de VNDK:
Los procesos del framework no deben cargar bibliotecas compartidas que no sean de SP-HAL desde particiones del proveedor (se aplica estrictamente a partir de Android 8.1).
Los procesos del proveedor no deben cargar bibliotecas que no sean de LL-NDK, VNDK-SP ni VNDK desde la partición del sistema. (no se aplica estrictamente en Android O, pero sí en una versión futura).
Las bibliotecas de VNDK instaladas deben ser un subconjunto de las bibliotecas de VNDK aptas definidas por Google.
Las dependencias externas de SP-HAL y SP-HAL-Dep deben restringirse a las bibliotecas de LL-NDK o VNDK-SP definidas por Google.
Las dependencias de una biblioteca compartida de SP-HAL deben restringirse a bibliotecas de LL-NDK, bibliotecas de VNDK-SP definidas por Google, otras bibliotecas de SP-HAL o bibliotecas compartidas de otros proveedores que se puedan etiquetar como bibliotecas de SP-HAL-Dep.
Una biblioteca compartida del proveedor se puede etiquetar como una biblioteca de SP-HAL-Dep solo si no es una biblioteca de AOSP y sus dependencias están restringidas a bibliotecas de LL-NDK, bibliotecas de VNDK-SP definidas por Google, bibliotecas de SP-HAL o cualquier otra biblioteca de SP-HAL-Dep.
VNDK-SP debe ser independiente. libRS_internal.so recibe un tratamiento especial en Android 8.0, pero se volverá a revisar en una versión futura.
No se debe realizar ninguna comunicación entre el framework y el proveedor a través de interfaces que no sean HIDL, incluidos, 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 de VNDK aptas y una copia de las bibliotecas compartidas del framework no aptas.
sepolicy
Los procesos del framework que se describen en esta sección corresponden a coredomain en sepolicies, mientras que los procesos del proveedor corresponden a non-coredomain. Por ejemplo, solo se puede acceder a /dev/binder en coredomain y solo se puede acceder a /dev/vndbinder en no coredomain.
Políticas similares restringen el acceso a las bibliotecas compartidas en las particiones del sistema y del proveedor. En la siguiente tabla, se muestran los derechos de acceso a bibliotecas compartidas de diferentes categorías:
Categoría
Partición
Accesible desde coredomain
Se puede acceder desde dominios que no son del grafo principal
LL-NDK
Sistema
S
S
LL-NDK-Private
Sistema
S
S
VNDK-SP/VNDK-SP-Private
Sistema
S
S
VNDK-SP-Ext
Proveedor
S
S
VNDK
Sistema
S
S
VNDK-Ext
Proveedor
N
S
FWK-ONLY
Sistema
S
N
FWK-ONLY-RS
Sistema
S
N
SP-HAL
Proveedor
S
S
SP-HAL-Dep
Proveedor
S
S
VND-ONLY
Proveedor
N
S
Se debe poder acceder a LL-NDK-Private y VNDK-SP-Private desde ambos dominios, ya que los no coredomain accederán a ellos de forma indirecta. Del mismo modo, se debe poder acceder a SP-HAL-Dep desde coredomain porque SP-HAL depende de ella.
Etiqueta same_process_hal_file
Las siguientes bibliotecas existen en la partición del proveedor. Haz que estas bibliotecas sean accesibles desde coredomain y desde no 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 estos archivos de forma explícita como same_process_hal_file, ya que coredomain no puede acceder a nada de la partición vendor de forma predeterminada. Agrega líneas similares a las siguientes al archivo file_contexts específico del proveedor.
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-07-27 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-07-27 (UTC)"],[],[],null,["# Directories, rules, and sepolicy\n\nThis page describes the directory layout for devices running Android 8.0 and\nhigher, VNDK rules, and associated sepolicy.\n\nDirectory layout\n----------------\n\nThe *Degenerated Directory Layout* consists of the following\ndirectories:\n\n- `/system/lib[64]` contains all framework shared libraries, including LL-NDK, VNDK, and framework-only libraries (including LL-NDK-Private and some libraries with the same names as the ones in VNDK-SP).\n- `/system/lib[64]/vndk-sp` contains VNDK-SP libraries for same-process HALs.\n- `/vendor/lib[64]` contains the VNDK libraries extended by the vendor (either DXUA or DXUX VNDK libraries), same-process HAL implementations, and other vendor shared libraries.\n- `/vendor/lib[64]/vndk-sp` may contain the VNDK-SP libraries extended by the vendor.\n\nVendor modules load the VNDK libraries from `/system/lib[64]`.\n\nVNDK rules\n----------\n\nThis section provides a comprehensive list of VNDK rules:\n\n- Framework processes must not load non-SP-HAL shared libraries from vendor partitions (strictly enforced starting from Android 8.1).\n- Vendor processes must not load non-LL-NDK, non-VNDK-SP, and non-VNDK libraries from the system partition. (not strictly enforced in Android O but will be in a future release).\n| **Note**: To benefit from the framework-only OTA beyond Android 8.0, this rule must not be violated in devices launched with Android 8.0.\n- Installed VNDK libraries must be a subset of Google-defined eligible VNDK libraries.\n- The outer dependencies of SP-HAL and SP-HAL-Dep must be restricted to LL-NDK or Google-defined VNDK-SP libraries.\n - The dependencies of an SP-HAL shared library must be restricted to LL-NDK libraries, Google-defined VNDK-SP libraries, other SP-HAL libraries, and/or other vendor shared libraries that can be labeled as SP-HAL-Dep libraries.\n - A vendor shared library can be labeled as a SP-HAL-Dep library only if it is not an AOSP library and its dependencies are restricted to LL-NDK libraries, Google-defined VNDK-SP libraries, SP-HAL libraries, and/or other SP-HAL-Dep libraries.\n- VNDK-SP must be self-contained. `libRS_internal.so` gets special treatment in Android 8.0, but will be revisited in a future release.\n- No framework-vendor communication through non-HIDL interfaces, including (but not limited to) binder, sockets, shared memories, files, etc.\n- The size of the system partition must be large enough to contain two copies of all eligible VNDK libraries and a copy of ineligible framework shared libraries.\n\nsepolicy\n--------\n\nFramework processes described in this section correspond to\n`coredomain` in sepolicies while vendor processes correspond to\n`non-coredomain`. For example, `/dev/binder` can be\naccessed only in `coredomain` and `/dev/vndbinder` can be\naccessed only in non-`coredomain`.\n\nSimilar policies restrict the access to the shared libraries on system and\nvendor partitions. The following table shows the rights to access shared\nlibraries of different categories:\n\n| Category | Partition | Accessible from coredomain | Accessible from non-coredomain |\n|-------------------------|-----------|----------------------------|--------------------------------|\n| LL-NDK | System | Y | Y |\n| LL-NDK-Private | System | Y | Y |\n| VNDK-SP/VNDK-SP-Private | System | Y | Y |\n| VNDK-SP-Ext | Vendor | Y | Y |\n| VNDK | System | Y | Y |\n| VNDK-Ext | Vendor | N | Y |\n| FWK-ONLY | System | Y | N |\n| FWK-ONLY-RS | System | Y | N |\n| SP-HAL | Vendor | Y | Y |\n| SP-HAL-Dep | Vendor | Y | Y |\n| VND-ONLY | Vendor | N | Y |\n\nLL-NDK-Private and VNDK-SP-Private must be\naccessible from both domains because non-`coredomain` will\nindirectly access them. Similarly, SP-HAL-Dep must be accessible from\n`coredomain` because SP-HAL relies on it.\n\nsame_process_hal_file label\n---------------------------\n\nThe following libraries exist in the vendor partition. Make these libraries accessible from both\n`coredomain` and non-`coredomain`.\n\n- VNDK-SP-Ext in `/vendor/lib[64]/vndk-sp`\n- SP-HAL in `/vendor/lib[64]` or `/vendor/lib[64]/hw`\n- SP-HAL-Dep in `/vendor/lib[64]` or `/vendor/lib[64]/hw`\n\nExplicitly label these files as `same_process_hal_file`, because anything\nin `vendor` partition is by default not accessible to `coredomain`. Add lines similar to\nthe following to the vendor-specific `file_contexts` file. \n\n```scdoc\n/vendor/lib(64)?/hw/libMySpHal\\.so u:object_r:same_process_hal_file:s0\n/vendor/lib(64)?/vndk-sp/libBase\\.so u:object_r:same_process_hal_file:s0\n/vendor/lib(64)?/libBaseInternal\\.so u:object_r:same_process_hal_file:s0\n```"]]