Google is committed to advancing racial equity for Black communities. See how.
Эта страница переведена с помощью Cloud Translation API.
Switch to English

Каталоги, правила и политика

На этой странице описывается структура каталогов для устройств под управлением 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

В этом разделе представлен полный список правил VNDK:

  • Процессы платформы не должны загружать разделяемые библиотеки, не относящиеся к SP-HAL, из разделов поставщика (строго соблюдается, начиная с Android 8.1).
  • Процессы поставщика не должны загружать библиотеки без LL-NDK, без VNDK-SP и без VNDK из системного раздела. (не строго соблюдается в Android O, но будет в следующем выпуске).
  • Установленные библиотеки VNDK должны быть подмножеством допустимых библиотек VNDK, определенных Google.
  • Внешние зависимости 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 и копию неподходящих разделяемых библиотек фреймворка.

sepolicy

Структурные процессы, описанные в этом разделе, соответствуют coredomain в отдельных coredomain в то время как процессы поставщика соответствуют non-coredomain . Например, к /dev/binder coredomain можно получить доступ только в coredomain а к /dev/vndbinder можно получить доступ только в coredomain .

Подобные политики ограничивают доступ к разделяемым библиотекам в разделах системы и поставщика. В следующей таблице показаны права на доступ к разделяемым библиотекам разных категорий:

Категория Раздел Доступен из
коредомен
Доступен из
без ядра
LL-NDK Система Y Y
LL-NDK-Private Система Y Y
ВНДК-СП / ВНДК-СП-Приват Система Y Y
ВНДК-СП-Ext Продавец Y Y
ВНДК Система Y Y
ВНДК-Ext Продавец N Y
ТОЛЬКО FWK Система Y N
FWK-ONLY-RS Система Y N
SP-HAL Продавец Y Y
SP-HAL-Dep Продавец Y Y
ТОЛЬКО VND Продавец N Y

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 конкретного 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