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