Podpisana przez platformę lista dozwolonych identyfikatorów UID

Aplikacje podpisane przez platformę to aplikacje, które mają ten sam (lub zgodny) certyfikat podpisywania co pakiet platformy (android). Aplikacja podpisana przez platformę może być aplikacją systemową (znajdującą się w 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ę. Kompilacje z możliwością debugowania to kompilacje, w których android.os.Build.isDebuggable() zwraca wartość true, np. kompilacje userdebug lub eng.

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

Dodawanie listy dozwolonych

Listy dozwolonych dla 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ć niesystemową aplikację podpisaną przez platformę w kompilacji bez możliwości debugowania 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}