На этой странице описывается структура каталогов для устройств под управлением 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:
- Процессы Framework не должны загружать общие библиотеки, отличные от SP-HAL, из разделов поставщика (строго соблюдается, начиная с Android 8.1).
- Процессы поставщика не должны загружать библиотеки не-LL-NDK, не-VNDK-SP и не-VNDK из системного раздела. (не строго соблюдается в Android O, но будет в будущем выпуске).
- Установленные библиотеки VNDK должны быть подмножеством определенных Google допустимых библиотек VNDK.
- Внешние зависимости SP-HAL и SP-HAL-Dep должны быть ограничены библиотеками LL-NDK или VNDK-SP, определенными Google.
- Зависимости общей библиотеки SP-HAL должны быть ограничены библиотеками LL-NDK, определенными Google библиотеками VNDK-SP, другими библиотеками SP-HAL и/или общими библиотеками других поставщиков, которые могут быть помечены как библиотеки SP-HAL-Dep. .
- Общая библиотека поставщика может быть помечена как библиотека SP-HAL-Dep, только если она не является библиотекой AOSP и ее зависимости ограничены библиотеками LL-NDK, определенными Google библиотеками VNDK-SP, библиотеками SP-HAL и/или другие библиотеки SP-HAL-Dep.
- ВНДК-СП должен быть автономным.
libRS_internal.so
получает специальную обработку в Android 8.0, но будет пересмотрен в будущем выпуске. - Нет связи между платформой и поставщиком через интерфейсы, отличные от HIDL, включая (но не ограничиваясь) связующее, сокеты, общую память, файлы и т. д.
- Размер системного раздела должен быть достаточно большим, чтобы содержать две копии всех допустимых библиотек VNDK и копию недопустимых общих библиотек платформы.
сеполитика
Процессы платформы, описанные в этом разделе, соответствуют coredomain
в sepolicies, а процессы поставщика соответствуют non-coredomain
. Например, к /dev/binder
dev/binder можно получить доступ только в coredomain
а к /dev/vndbinder
можно получить доступ только в coredomain
.
Аналогичные политики ограничивают доступ к общим библиотекам в системном разделе и разделе поставщика. В следующей таблице показаны права доступа к разделяемым библиотекам разных категорий:
Категория | Раздел | Доступно из основной домен | Доступно из неосновной домен |
---|---|---|---|
ЛЛ-НДК | Система | Д | Д |
LL-NDK-Частный | Система | Д | Д |
ВНДК-СП/ВНДК-СП-Частный | Система | Д | Д |
ВНДК-СП-Ext | Продавец | Д | Д |
ВНДК | Система | Д | Д |
ВНДК-Ext | Продавец | Н | Д |
ТОЛЬКО FWK | Система | Д | Н |
FWK-ONLY-RS | Система | Д | Н |
СП-ХАЛ | Продавец | Д | Д |
SP-HAL-Dep | Продавец | Д | Д |
ТОЛЬКО VND | Продавец | Н | Д |
LL-NDK-Private и VNDK-SP-Private должны быть доступны из обоих доменов, поскольку coredomain
будет иметь к ним непрямой доступ. Точно так же SP-HAL-Dep должен быть доступен из coredomain
поскольку SP-HAL полагается на него.
метка same_process_hal_file
В разделе поставщика существуют следующие библиотеки. Сделайте эти библиотеки доступными как из coredomain
так и из non- 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
конкретного поставщика.
/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