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ą. Uprawnienia podpisu platformy to uprawnienia zdefiniowane przez pakiet platformy, które mają też poziom ochrony signature
. Kompilacje umożliwiające debugowanie 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 uprawnienia platformy signature
można przyznać aplikacjom niesystemowym podpisanym przez platformę.
Począwszy od Androida 15 producenci mogą wyraźnie przyznawać uprawnienia do podpisu platformy w plikach XML konfiguracji systemu w katalogu /etc/permissions
. Jeśli aplikacja niesystemowa podpisana przez platformę nie jest dodana do listy dozwolonych dla uprawnienia związanego z podpisaniem przez platformę, uprawnienie działa tak, jakby aplikacja nie była podpisana przez platformę w przypadku wersji nieobejmujących debugowania.
Dodawanie listy dozwolonych
Listy zezwoleń dla aplikacji możesz umieścić w pojedynczym pliku XML lub w kilku plikach XML znajdujących się w katalogu frameworks/base/etc/permissions
:
/etc/permissions/signature-permissions-OEM_NAME.xml
/etc/permissions/signature-permissions-DEVICE_NAME.xml
Nie ma ścisłych zasad dotyczących porządkowania treści. Implementatorzy urządzeń mogą określać strukturę treści, o ile odpowiednie aplikacje i ich uprawnienia zostały dodane do listy dozwolonych.
Dostosowywanie listy dozwolonych
AOSP zawiera implementację listy dozwolonych, którą możesz dostosować w razie potrzeby, podobnie jak listę dozwolonych uprawnień uprzywilejowanych. Przykład:
<!--
~ This XML file declares which platform signature permissions to grant to
~ platform signed nonsystem apps.
-->
<permissions>
<signature-permissions package="com.android.example">
<permission name="android.permission.READ_DEVICE_CONFIG"/>
...
</signature-permissions>
...
</permissions>
Znajdowanie brakujących uprawnień
Aby znaleźć brakujące uprawnienia, zainstaluj aplikację podpisaną na platformie i sprawdź dzienniki urządzenia pod kątem obecności komunikatów o ostrzeganiu w takim formacie:
Signature permission {PERMISSION_NAME} for package {PACKAGE_NAME} ({PACKAGE_PATH}) not in signature permission allowlist
System może nadal przyznawać uprawnienia w przypadku wersji z możliwością debugowania, ale nie w przypadku wersji bez możliwości debugowania, takich jak wersje user
.