Белый список разрешений на подпись

Приложения, подписанные платформой, – это приложения, которые используют тот же (или совместимый) сертификат подписи, что и пакет платформы (android). Приложение, подписанное платформой, может быть системным (расположенным в разделе образа системы) или несистемным. Разрешения, подписанные платформой, – это разрешения, определенные пакетом платформы, которые также имеют уровень защиты signature. Отладочные сборки – это сборки, для которых android.os.Build.isDebuggable() возвращает true, например сборки userdebug или eng.

Раньше производители устройств не могли контролировать, какие разрешения платформы signature можно предоставлять несистемным приложениям, подписанным платформой. В Android 15 производители могут явно предоставлять разрешения на подпись платформы в XML-файлах конфигурации системы в каталоге /etc/permissions. Если подписанное платформой приложение, не являющееся системным, не добавлено в белый список для разрешения на подпись платформы, это разрешение будет действовать так, как если бы приложение не было подписано платформой в сборках, не предназначенных для отладки.

Как добавить белый список

Вы можете перечислить белые списки разрешений для приложений в одном или нескольких XML-файлах, расположенных в каталоге /etc/permissions:

  • /etc/permissions/signature-permissions-OEM_NAME.xml
  • /etc/permissions/signature-permissions-DEVICE_NAME.xml

Нет строгих правил относительно того, как должен быть организован контент. Производители устройств могут определять структуру контента, если соответствующие приложения и их разрешения добавлены в белый список.

Как настроить белый список

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

<!--
  ~ This XML file declares which platform signature permissions to grant to
  ~ platform signed nonsystem apps.
  -->

<permissions>
    <signature-permissions package="com.android.example">
        <permission name="android.permission.READ_DEVICE_CONFIG"/>
        ...
    </signature-permissions>
    ...
</permissions>

Как найти недостающие разрешения

Чтобы найти недостающие разрешения, установите подписанное приложение и проверьте журналы устройства на наличие предупреждений следующего формата:

Signature permission {PERMISSION_NAME} for package {PACKAGE_NAME} ({PACKAGE_PATH}) not in signature permission allowlist

Система может предоставить разрешение в отладочных сборках, но не в сборках без возможности отладки, например в сборках user.