Общий белый список UID, подписанный платформой

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