Aplikacje podpisane przez platformę to aplikacje, które współdzielą ten sam (lub zgodny) certyfikat podpisywania z pakietem platformy (android
). Aplikacja podpisana przez platformę może być aplikacją systemową (znajdującą się na partycji obrazu systemowego) lub aplikacją niesystemową.
Udostępniane przez platformę identyfikatory UID podpisane przez platformę to wspólne identyfikatory UID (android:sharedUserId
), które zawierają aplikacje podpisane przez platformę. Kompilacje do debugowania to kompilacje, których android.os.Build.isDebuggable()
zwraca true
, np. kompilacje userdebug
lub eng
.
W przeszłości producenci urządzeń mieli niewielką kontrolę nad tym, które aplikacje niezwiązane z systemem podpisane przez platformę mogą dołączyć do wspólnego identyfikatora UID podpisanego przez platformę. Począwszy od Androida 15 producenci mogą w plikach XML konfiguracji systemu w katalogu /etc/permissions
wyraźnie zezwalać aplikacjom innym niż systemowemu na dołączanie do podpisanych przez platformę identyfikatorów UID podpisanych przez platformę. Jeśli aplikacja niesystemowa podpisana przez platformę nie została 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 pliku manifestu), nie można jej zainstalować w wersjach niedebuggowanych.
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ć podpisaną przez platformę aplikację niesystemową w kompilacji niemożliwej do debugowania i sprawdź, czy nadal można ją zainstalować. W przeciwnym razie możesz przejrzeć logi urządzenia pod kątem tego formatu komunikatów ostrzeżeń:
Non-preload app {PACKAGE_NAME} signed with platform signature and joining shared uid: {SHARED_UID_NAME}