Lista dozwolonych uprawnień do podpisu

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.