Подписанные на платформе приложения — это приложения, которые используют тот же (или совместимый) сертификат подписи, что и пакет платформы ( 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
сборки.