Aplikacje podpisane przez platformę to aplikacje, które mają ten sam (lub zgodny) certyfikat podpisu 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 z możliwością 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 uprawnienia platformysignature
można było przyznać aplikacjom niesystemowym podpisanym na platformie.
Od Androida 15 producenci mogą jawnie przyznawać uprawnienia podpisu platformy w plikach XML konfiguracji systemu w katalogu /etc/permissions
. Jeśli platforma nie dodała do listy dozwolonych aplikacji bez podpisu systemowego w przypadku uprawnień do podpisu platformy, to uprawnienie działa tak, jakby aplikacja nie miała podpisu platformy w przypadku kompilacji, których nie można debugować.
Dodawanie listy dozwolonych
Listy dozwolonych uprawnień dla aplikacji możesz umieścić w jednym lub 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. Wdrażający urządzenia 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 w razie potrzeby dostosować, 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 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 przypadku kompilacji z możliwością debugowania, ale nie w przypadku kompilacji bez możliwości debugowania, takich jak kompilacje user
.