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ą. Uprawnienia podpisu platformy to uprawnienia zdefiniowane przez pakiet platformy, które mają też poziom ochrony signature. 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 uprawnienia signature platformy można było przyznać niesystemowym aplikacjom podpisanym przez platformę.
Od Androida 15 producenci mogą wyraźnie przyznawać uprawnienia podpisu platformy w plikach XML konfiguracji systemu w katalogu /etc/permissions. Jeśli niesystemowa aplikacja podpisana przez platformę nie zostanie dodana do listy dozwolonych dla uprawnienia podpisu platformy, to uprawnienie będzie działać tak, jakby aplikacja nie była podpisana przez platformę w kompilacjach bez możliwości debugowania.
Dodawanie listy dozwolonych
Listy dozwolonych uprawnień dla aplikacji możesz umieścić w jednym pliku XML lub w kilku plikach XML znajdujących się w katalogu /etc/permissions:
/etc/permissions/signature-permissions-OEM_NAME.xml/etc/permissions/signature-permissions-DEVICE_NAME.xml
Nie ma ścisłych reguł dotyczących organizacji treści. Implementatorzy urządzeń mogą określać strukturę treści, o ile odpowiednie aplikacje i ich uprawnienia zostaną dodane do listy dozwolonych.
Dostosowywanie listy dozwolonych
AOSP zawiera implementację listy dozwolonych, którą możesz dostosować do swoich potrzeb, 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ą przez platformę i sprawdź logi urządzenia pod kątem ostrzeżeń w tym formacie:
Signature permission {PERMISSION_NAME} for package {PACKAGE_NAME} ({PACKAGE_PATH}) not in signature permission allowlist
System może nadal przyznawać uprawnienia w kompilacjach z możliwością debugowania, ale nie w kompilacjach bez możliwości debugowania, takich jak kompilacje user.