Zulassungsliste für Berechtigungen für Signaturen

Plattformsignierte Apps sind Apps, die dasselbe (oder ein kompatibles) Signaturzertifikat wie das Plattformpaket (android) verwenden. Eine plattformsignierte App kann eine System-App (auf einer Systemimage-Partition) oder eine Nicht-System-App sein. Berechtigungen für die Plattformsignatur sind Berechtigungen, die vom Plattformpaket definiert werden und auch die Schutzstufe signature haben. Debugfähige Builds sind Builds, deren android.os.Build.isDebuggable() true zurückgibt, z. B. userdebug- oder eng-Builds.

Bisher hatten Gerätehersteller wenig Kontrolle darüber, welche signature-Berechtigungen für nicht systembezogene Apps mit Plattformsignatur gewährt werden konnten. Ab Android 15 können Hersteller in den XML-Dateien der Systemkonfiguration im Verzeichnis /etc/permissions explizit Berechtigungen für Plattformsignaturen gewähren. Wenn eine nicht systembezogene App, die mit einer Plattformsignatur signiert ist, nicht der Zulassungsliste für eine Berechtigung für eine Plattformsignatur hinzugefügt wird, verhält sich diese Berechtigung so, als ob die App in nicht debugfähigen Builds nicht mit einer Plattformsignatur signiert wäre.

Zulassungsliste hinzufügen

Sie können Zulassungslisten für Berechtigungen für Apps in einer einzelnen XML-Datei oder in mehreren XML-Dateien im Verzeichnis /etc/permissions auflisten:

  • /etc/permissions/signature-permissions-OEM_NAME.xml
  • /etc/permissions/signature-permissions-DEVICE_NAME.xml

Es gibt keine strengen Regeln für die Organisation von Inhalten. Geräteimplementierer können die Inhaltsstruktur festlegen, sofern die entsprechenden Apps und ihre Berechtigungen auf die Zulassungsliste gesetzt werden.

Zulassungsliste anpassen

AOSP enthält eine Implementierung einer Zulassungsliste, die Sie nach Bedarf anpassen können, ähnlich wie die Zulassungsliste für Berechtigungen mit Sonderzugriff. Beispiel:

<!--
  ~ 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>

Fehlende Berechtigungen finden

Wenn Sie fehlende Berechtigungen finden möchten, installieren Sie Ihre plattformsignierte App und sehen Sie sich die Geräteprotokolle an. Achten Sie dabei auf Warnmeldungen im folgenden Format:

Signature permission {PERMISSION_NAME} for package {PACKAGE_NAME} ({PACKAGE_PATH}) not in signature permission allowlist

Das System kann die Berechtigung weiterhin für debugfähige Builds erteilen, nicht jedoch für nicht debugfähige Builds wie user-Builds.