Plattformsignierte Zulassungsliste für freigegebene UIDs

Plattformsignierte Apps sind Apps, die dasselbe (oder ein kompatibles) Signaturzertifikat wie das Plattformpaket (android) haben. Eine plattformsignierte App kann eine System-App (auf einer System-Image-Partition) oder eine Nicht-System-App sein. Plattformsignierte freigegebene UIDs sind freigegebene UIDs (android:sharedUserId), die plattformsignierte Apps enthalten. Debuggbare Builds sind Builds, deren android.os.Build.isDebuggable() true zurückgibt, z. B. userdebug- oder eng-Builds.

Bisher hatten Gerätehersteller nur wenig Kontrolle darüber, welche nicht systemeigenen, von der Plattform signierten Apps einer von der Plattform signierten freigegebenen UID beitreten konnten. Ab Android 15 können Hersteller nicht systemeigenen Apps, die von der Plattform signiert wurden, ausdrücklich erlauben, sich mit von der Plattform signierten freigegebenen UIDs in den Systemkonfigurations-XML-Dateien im Verzeichnis /etc/permissions zu verbinden. Wenn eine nicht systemeigene App, die von der Plattform signiert wurde, nicht der Zulassungsliste für eine von der Plattform signierte freigegebene UID hinzugefügt wird und die App trotzdem versucht, der von der Plattform signierten freigegebenen UID beizutreten (mit android:sharedUserId im Manifest), kann diese App nicht auf nicht debuggbaren Builds installiert werden.

Zulassungsliste hinzufügen

Sie können Zulassungslisten für Apps in einer einzelnen XML-Datei oder in mehreren XML-Dateien angeben, ähnlich wie bei 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>

Fehlende Zulassungsliste finden

Wenn Sie einen fehlenden Eintrag auf der Zulassungsliste finden möchten, versuchen Sie, Ihre von der Plattform signierte Nicht-System-App auf einem nicht debugbaren Build zu installieren und prüfen Sie, ob sie trotzdem installiert werden kann. Andernfalls können Sie die Geräteprotokolle auf Warnungen im folgenden Format prüfen:

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