Lista dozwolonych uprawnień do podpisu

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.