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

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

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

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

Вы можете перечислить списки разрешений для приложений в одном XML-файле или в нескольких XML-файлах, расположенных в каталоге frameworks/base/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 сборки.