Plattformsignierte Zulassungsliste für freigegebene UIDs

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

Bisher hatten Gerätehersteller wenig Kontrolle darüber, welche plattformsignierten Nicht-System-Apps einer plattformsignierten gemeinsamen UID beitreten konnten. Ab Android 15 können Hersteller plattformsignierten Nicht-System-Apps explizit erlauben, plattformsignierten freigegebenen UIDs in den XML-Dateien der Systemkonfiguration im Verzeichnis /etc/sysconfig beizutreten. Wenn eine plattformsignierte Nicht-System-App nicht zur Zulassungsliste für eine plattformsignierte gemeinsame UID hinzugefügt wird und die App weiterhin versucht, der plattformsignierten gemeinsamen UID beizutreten (mit android:sharedUserId im Manifest), kann diese App nicht auf nicht debugfähigen Builds installiert werden.

Zulassungsliste hinzufügen

Sie können Zulassungslisten für Apps in einer einzelnen XML-Datei oder in mehreren XML-Dateien auflisten, ä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 plattformsignierte Nicht-System-App auf einem nicht debugfähigen Build zu installieren, und prüfen Sie, ob sie weiterhin installiert werden kann. Andernfalls können Sie die Geräteprotokolle auf Warnmeldungen im folgenden Format prüfen:

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