Начиная с 27 марта 2025 г. мы рекомендуем использовать android-latest-release вместо aosp-main для создания и участия в AOSP. Дополнительные сведения см. в разделе Изменения в AOSP .
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
На этой странице описана структура каталога для устройств под управлением Android 8.0 и более поздних версий, правила VNDK и связанная с ними политика безопасности.
Макет каталога
Вырожденный макет каталогов состоит из следующих каталогов:
/system/lib[64] содержит все общие библиотеки платформы, включая LL-NDK, VNDK и библиотеки только для платформы (включая LL-NDK-Private и некоторые библиотеки с теми же именами, что и в VNDK-SP).
/system/lib[64]/vndk-sp содержит библиотеки VNDK-SP для HAL одного и того же процесса.
/vendor/lib[64] содержит библиотеки VNDK, расширенные поставщиком (библиотеки DXUA или DXUX VNDK), реализации HAL того же процесса и общие библиотеки других поставщиков.
/vendor/lib[64]/vndk-sp может содержать библиотеки VNDK-SP, расширенные поставщиком.
Модули поставщиков загружают библиотеки VNDK из /system/lib[64] .
Правила ВНДК
В этом разделе представлен полный список правил VNDK:
Процессы платформы не должны загружать общие библиотеки, отличные от SP-HAL, из разделов поставщика (строго соблюдается, начиная с Android 8.1).
Процессы поставщика не должны загружать библиотеки, отличные от LL-NDK, не-VNDK-SP и не-VNDK, из системного раздела. (не строго соблюдается в Android O, но будет в будущем выпуске).
Установленные библиотеки VNDK должны входить в состав подмножества соответствующих библиотек VNDK, определенных Google.
Внешние зависимости SP-HAL и SP-HAL-Dep должны быть ограничены библиотеками LL-NDK или Google VNDK-SP.
Зависимости общей библиотеки SP-HAL должны быть ограничены библиотеками LL-NDK, определенными Google библиотеками VNDK-SP, другими библиотеками SP-HAL и/или общими библиотеками других поставщиков, которые могут быть помечены как библиотеки SP-HAL-Dep. .
Общая библиотека поставщика может быть помечена как библиотека SP-HAL-Dep только в том случае, если она не является библиотекой AOSP и ее зависимости ограничены библиотеками LL-NDK, библиотеками VNDK-SP, определенными Google, библиотеками SP-HAL и/или другие библиотеки SP-HAL-Dep.
ВНДК-СП должен быть автономным. libRS_internal.so получает специальную обработку в Android 8.0, но к нему мы вернемся в будущем выпуске.
Никакой связи между платформой и поставщиком через интерфейсы, отличные от HIDL, включая (но не ограничиваясь) связующее устройство, сокеты, общую память, файлы и т. д.
Размер системного раздела должен быть достаточно большим, чтобы содержать две копии всех подходящих библиотек VNDK и копию неподходящих общих библиотек платформы.
сеполитика
Процессы платформы, описанные в этом разделе, соответствуют coredomain в политиках se, а процессы поставщика соответствуют non-coredomain . Например, /dev/binder доступен только в coredomain , а /dev/vndbinder — только в неосновном coredomain .
Подобные политики ограничивают доступ к общим библиотекам в системных и вендорных разделах. В следующей таблице показаны права доступа к общим библиотекам разных категорий:
Категория
Раздел
Доступно из основной домен
Доступно из неосновной домен
ЛЛ-НДК
Система
Да
Да
ЛЛ-НДК-Частный
Система
Да
Да
ВНДК-СП/ВНДК-СП-Частный
Система
Да
Да
ВНДК-СП-Ext
Продавец
Да
Да
ВНДК
Система
Да
Да
ВНДК-Ext
Продавец
Н
Да
ТОЛЬКО FWK
Система
Да
Н
FWK-ТОЛЬКО-RS
Система
Да
Н
СП-ХАЛ
Продавец
Да
Да
SP-HAL-Отдел
Продавец
Да
Да
ТОЛЬКО ВНД
Продавец
Н
Да
LL-NDK-Private и VNDK-SP-Private должны быть доступны из обоих доменов, поскольку неосновной coredomain будет иметь к ним косвенный доступ. Аналогично, SP-HAL-Dep должен быть доступен из coredomain , поскольку SP-HAL полагается на него.
метка Same_process_hal_file
В разделе поставщика существуют следующие библиотеки. Сделайте эти библиотеки доступными как из coredomain , так и из неосновного coredomain .
VNDK-SP-Ext в /vendor/lib[64]/vndk-sp
SP-HAL в /vendor/lib[64] или /vendor/lib[64]/hw
SP-HAL-Dep в /vendor/lib[64] или /vendor/lib[64]/hw
Явно пометьте эти файлы как same_process_hal_file , поскольку все в разделе vendor по умолчанию недоступно для coredomain . Добавьте строки, подобные приведенным ниже, в файл file_contexts , зависящий от поставщика.
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-29 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-07-29 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```"]]