Подписанные платформой приложения — это приложения, которые совместно используют тот же (или совместимый) сертификат подписи с пакетом платформы ( android
). Подписанное платформой приложение может быть системным приложением (расположенным в разделе образа системы) или несистемным приложением. Подписанные платформой общие UID — это общие UID ( android:sharedUserId
), которые содержат подписанные платформой приложения. Отлаживаемые сборки — это сборки, у которых android.os.Build.isDebuggable()
возвращает true
, например, сборки userdebug
или eng
.
Исторически производители устройств имели небольшой контроль над тем, какие несистемные приложения с подписью платформы могут присоединяться к общему UID с подписью платформы. Начиная с Android 15, производители могут явно разрешить несистемным приложениям с подписью платформы присоединяться к общим UID с подписью платформы в XML-файлах конфигурации системы в каталоге /etc/permissions
. Если несистемное приложение с подписью платформы не добавлено в список разрешенных для общего UID с подписью платформы, и приложение все еще пытается присоединиться к общему UID с подписью платформы (с android:sharedUserId
в его манифесте), это приложение не может быть установлено в неотлаживаемых сборках.
Добавить белый список
Вы можете перечислить списки разрешенных приложений в одном XML-файле или в нескольких XML-файлах, аналогично frameworks/base/data/etc/package-shareduid-allowlist.xml
:
<!--
This XML defines an allowlist for packages that want to join a particular shared-uid.
If a non-system package that is signed with platform signature, is trying to join a particular
shared-uid, and not in this list, the installation will fail.
- The "package" XML attribute refers to the app's package name.
- The "shareduid" XML attribute refers to the shared uid name.
-->
<config>
<allow-package-shareduid package="android.test.settings" shareduid="android.uid.system" />
</config>
Найти отсутствующий белый список
Чтобы найти отсутствующую запись в списке разрешений, попробуйте установить подписанное платформой несистемное приложение на неотлаживаемой сборке и проверьте, можно ли его установить. Если нет, вы можете проверить журналы устройств на наличие следующего формата предупреждающих сообщений:
Non-preload app {PACKAGE_NAME} signed with platform signature and joining shared uid: {SHARED_UID_NAME}