Liste d'autorisation d'UID partagés signés par la plate-forme

Les applications signées par la plate-forme sont des applications qui partagent le même certificat de signature (ou un certificat compatible) avec le package de la plate-forme (android). Une application signée par la plate-forme peut être une application système (située sur une partition d'image système) ou une application non système. Les UID partagés signés par la plate-forme sont des UID partagés (android:sharedUserId) qui contiennent des applications signées par la plate-forme. Les versions débogables sont celles dont android.os.Build.isDebuggable() renvoie true, comme les versions userdebug ou eng.

Historiquement, les fabricants d'appareils avaient peu de contrôle sur les applications non système signées par la plate-forme qui pouvaient rejoindre un UID partagé signé par la plate-forme. À partir d'Android 15, les fabricants peuvent autoriser explicitement les applications non système signées par la plate-forme à rejoindre les UID partagés signés par la plate-forme dans les fichiers XML de configuration système du répertoire /etc/sysconfig. Si une application non système signée par la plate-forme n'est pas ajoutée à la liste d'autorisation pour un UID partagé signé par la plate-forme et que l'application tente toujours de rejoindre l'UID partagé signé par la plate-forme (avec android:sharedUserId dans son fichier manifeste), cette application ne peut pas être installée sur des versions non débogables.

Ajouter une liste d'autorisation

Vous pouvez lister les listes d'autorisation pour les applications dans un ou plusieurs fichiers XML, comme dans 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>

Retrouver une liste d'autorisation manquante

Pour trouver une entrée manquante dans la liste d'autorisation, essayez d'installer votre application non système signée par la plate-forme sur une version non débogable et vérifiez si elle peut toujours être installée. Sinon, vous pouvez inspecter les journaux de l'appareil pour trouver les messages d'avertissement au format suivant :

Non-preload app {PACKAGE_NAME} signed with platform signature and joining shared uid: {SHARED_UID_NAME}