Приложения с платформенной подписью — это приложения, использующие тот же (или совместимый) сертификат подписи, что и пакет платформы ( android ). Приложение с платформенной подписью может быть системным приложением (расположенным на системном разделе образа) или несистемным приложением. Разрешения платформенной подписи — это разрешения, определенные пакетом платформы, которые также имеют уровень защиты signature . Отладочные сборки — это сборки, для которых android.os.Build.isDebuggable() возвращает true , например, userdebug или eng сборки.
Исторически сложилось так, что производители устройств имели ограниченный контроль над тем, какие разрешения на использование платформенной signature могут быть предоставлены несистемным приложениям, использующим эту подпись. Начиная с Android 15, производители могут явно предоставлять разрешения на использование платформенной подписи в XML-файлах конфигурации системы в каталоге /etc/permissions . Если несистемное приложение, использующее платформенную подпись, не добавлено в список разрешенных для разрешения на использование платформенной подписи, это разрешение будет действовать так, как если бы приложение не использовало платформенную подпись в сборках, не предназначенных для отладки.
Добавить список разрешенных
Список разрешений для приложений можно разместить в одном XML-файле или в нескольких 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 сборки.