簽章權限許可清單

平台簽署的應用程式是指與平台套件 (android) 共用相同 (或相容) 簽署憑證的應用程式。平台簽署的應用程式可以是系統應用程式 (位於系統映像檔分割區),也可以是非系統應用程式。平台簽章權限是指平台套件定義的權限,且具有 signature 保護層級。可偵錯的建構版本是指 android.os.Build.isDebuggable() 會傳回 true 的建構版本,例如 userdebugeng 建構版本。

過去,裝置製造商幾乎無法控管哪些平台 signature 權限可授予平台簽署的非系統應用程式。從 Android 15 開始,製造商可以在 /etc/permissions 目錄的系統設定 XML 檔案中,明確授予平台簽章權限。如果平台簽署的非系統應用程式未加入平台簽署權限的許可清單,在無法偵錯的建構版本中,該權限的行為會如同應用程式未經平台簽署。

新增許可清單

您可以在單一 XML 檔案中列出應用程式的權限允許清單,也可以在 /etc/permissions 目錄中的多個 XML 檔案中列出:

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

內容的整理方式沒有嚴格規定。只要將適當的應用程式及其權限新增至許可清單,裝置實作者就能決定內容結構。

自訂許可清單

AOSP 包含許可清單實作項目,您可以視需要自訂,類似於特殊權限許可清單。例如:

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

尋找缺少的權限

如要找出缺少的權限,請安裝平台簽署的應用程式,並檢查裝置記錄是否有以下格式的警告訊息:

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

系統仍可在可偵錯的建構版本中授予權限,但無法在不可偵錯的建構版本 (例如 user 建構版本) 中授予權限。