Podpisana przez platformę lista dozwolonych identyfikatorów UID

Aplikacje podpisane przez platformę to aplikacje, które mają ten sam (lub zgodny) certyfikat podpisu co pakiet platformy (android). Aplikacja podpisana przez platformę może być aplikacją systemową (znajdującą się na partycji obrazu systemu) lub aplikacją niesystemową. Współdzielone identyfikatory UID podpisane przez platformę to współdzielone identyfikatory UID (android:sharedUserId), które zawierają aplikacje podpisane przez platformę. Wersje z możliwością debugowania to wersje, których funkcja android.os.Build.isDebuggable() zwraca wartość true, np. wersje userdebug lub eng.

W przeszłości producenci urządzeń mieli niewielką kontrolę nad tym, które aplikacje niesystemowe podpisane przez platformę mogły dołączyć do podpisanego przez platformę wspólnego identyfikatora UID. Od Androida 15 producenci mogą wyraźnie zezwalać aplikacjom niesystemowym podpisanym przez platformę na dołączanie do wspólnych identyfikatorów UID podpisanych przez platformę w plikach XML konfiguracji systemu w katalogu /etc/sysconfig. Jeśli aplikacja niesystemowa podpisana przez platformę nie zostanie dodana do listy dozwolonych dla współdzielonego identyfikatora UID podpisanego przez platformę, a mimo to spróbuje dołączyć do tego identyfikatora (z android:sharedUserId w manifeście), nie będzie można jej zainstalować w wersjach, których nie można debugować.

Dodawanie listy dozwolonych

Listy dozwolonych aplikacji możesz umieścić w jednym lub kilku plikach XML, podobnie jak w przypadku 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>

Znajdowanie brakującej listy dozwolonych

Aby znaleźć brakujący wpis na liście dozwolonych, spróbuj zainstalować podpisaną przez platformę aplikację niesystemową na kompilacji, której nie można debugować, i sprawdź, czy nadal można ją zainstalować. Jeśli nie, możesz sprawdzić dzienniki urządzenia pod kątem ostrzeżeń w tym formacie:

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