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ą.
Uprawnienia do podpisu platformy to uprawnienia zdefiniowane w pakiecie platformy, które mają też poziom ochrony signature
. Kompilacje z możliwością debugowania to kompilacje, które android.os.Build.isDebuggable()
zwracają true
, takie jak kompilacje userdebug
lub eng
.
Dawniej producenci urządzeń mieli niewielką kontrolę nad tym, które uprawnienia platformy signature
można było przyznawać aplikacjom niebędącym systemem w systemie.
Począwszy od Androida 15 producenci mogą jawnie 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 nieobsługiwanych przez debuger.
Dodaj listę dozwolonych
Listy dozwolonych uprawnień aplikacji możesz wyświetlić w jednym pliku XML lub w wielu 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. Osoby wdrażające na urządzeniach mogą określać strukturę treści, o ile odpowiednie aplikacje i ich uprawnienia znajdują się na liście dozwolonych.
Dostosowywanie listy dozwolonych
AOSP zawiera implementację listy dozwolonych, którą możesz dostosować w razie potrzeby, podobnie jak w przypadku listy dozwolonych uprawnień. 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ądzeń pod kątem tego formatu komunikatów ostrzeżeń:
Signature permission {PERMISSION_NAME} for package {PACKAGE_NAME} ({PACKAGE_PATH}) not in signature permission allowlist
System nadal może przyznawać te uprawnienia w przypadku kompilacji możliwych do debugowania, ale nie w przypadku kompilacji, których nie można debugować, takich jak user
.