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ę na partycji obrazu systemu) lub aplikacją niesystemową. Podpisane przez platformę współdzielone identyfikatory UID to współdzielone identyfikatory UID (android:sharedUserId
), które zawierają aplikacje podpisane przez platformę. Wersje do debugowania to wersje, których android.os.Build.isDebuggable()
zwraca true
, np. wersje userdebug
lub eng
.
W przeszłości producenci urządzeń mieli niewielką kontrolę nad tym, które niesystemowe aplikacje podpisane przez platformę mogły dołączyć do współdzielonego identyfikatora UID podpisanego przez platformę. Od Androida 15 producenci mogą wyraźnie zezwalać aplikacjom niesystemowym podpisanym przez platformę na dołączanie do udostępnionych identyfikatorów UID podpisanych przez platformę w plikach konfiguracyjnych XML w katalogu /etc/permissions
. Jeśli aplikacja podpisana przez platformę, która nie jest aplikacją systemową, nie jest dodana do listy dozwolonych dla współdzielonego identyfikatora UID podpisanego przez platformę i nadal próbuje dołączyć do współdzielonego identyfikatora UID podpisanego przez platformę (z elementem android:sharedUserId
w manifeście), nie można jej zainstalować w wersjach nieobsługiwanych przez debugowanie.
Dodawanie listy dozwolonych
Listy dozwolonych aplikacji możesz podać w jednym pliku XML lub w kilku plikach XML, na przykład:
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ących list dozwolonych
Aby znaleźć brakujący wpis na liście dozwolonych, spróbuj zainstalować aplikację niesystemową podpisaną przez platformę w wersji nieobsługiwanej przez debuger i sprawdź, czy nadal można ją zainstalować. Jeśli nie, możesz sprawdzić dzienniki urządzenia pod kątem obecności komunikatów ostrzeżenia w takim formacie:
Non-preload app {PACKAGE_NAME} signed with platform signature and joining shared uid: {SHARED_UID_NAME}