簽章權限許可清單

平台簽署的應用程式是指共用相同 (或相容) 簽署的應用程式 並產生一個憑證 (android)。可由平台簽署的應用程式 系統應用程式 (位於系統映像檔分區) 或非系統應用程式。 平台簽章權限是由平台套件定義的權限 同時具備 signature 防護等級可進行偵錯的版本為建構版本 其 android.os.Build.isDebuggable() 會傳回 true,例如 userdebugeng 版本。

就以往的經驗來看,裝置製造商無法掌控要哪個平台 系統可能會將 signature 權限授予平台簽署的非系統應用程式。 從 Android 15 開始,製造商可明確 在以下項目的系統設定 XML 檔案中授予平台簽章權限: /etc/permissions 目錄。如果沒有執行平台簽署的非系統應用程式 將權限加入平台簽章權限的許可清單中,就會對該權限執行動作 就像應用程式在無法偵錯的版本上簽署的平台一樣。

新增許可清單

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

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

內容編排方式並無嚴謹,裝置實作者可以 判斷內容結構 (只要適當的應用程式 權限就會加入許可清單

自訂許可清單

Android 開放原始碼計畫提供許可清單實作內容,您可以視需要加以自訂。 類似 特殊權限許可清單。例如:

<!--
  ~ 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 版本。