Signature permission allowlist

Platform signed apps are apps sharing the same (or compatible) signing certificate with the platform package (android). A platform signed app can be a system app (located on a system image partition), or a nonsystem app. Platform signature permissions are permissions defined by the platform package that also have the signature protection level. Debuggable builds are builds whose android.os.Build.isDebuggable() return true, such as userdebug or eng builds.

Historically, device manufacturers had little control over which platform signature permissions could be granted to platform signed nonsystem apps. Starting in Android 15, manufacturers can explicitly grant platform signature permissions in the system configuration XML files in the /etc/permissions directory. If a platform signed nonsystem app isn't added to the allowlist for a platform signature permission, that permission acts as if the app isn't platform signed on nondebuggable builds.

Add an allowlist

You can list permission allowlists for apps in a single XML file or in multiple XML files located in the frameworks/base/etc/permissions directory:

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

No strict rule applies to how content is organized. Device implementers can determine content structure as long as the appropriate apps and their permissions are added to the allowlist.

Customize an allowlist

AOSP includes an allowlist implementation that you can customize as needed, similar to the privileged permission allowlist. For example:

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

Find missing permissions

To find missing permissions, install your platform signed app and inspect device logs for the following format of warning messages:

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

The system can still grant the permission on debuggable builds, but not on nondebuggable builds such as user builds.