平台簽署的應用程式與平台套件 (android
) 共用相同 (或相容) 簽署憑證的應用程式。平台簽署的應用程式可以是系統應用程式 (位於系統映像檔分區) 或非系統應用程式。平台簽章權限是由同樣具有 signature
保護等級的平台套件定義的權限。可進行偵錯的版本是指 android.os.Build.isDebuggable()
傳回 true
的版本,例如 userdebug
或 eng
版本。
過去,裝置製造商無法控管如何向平台簽署的非系統應用程式授予平台 signature
權限。自 Android 15 起,製造商可以在 /etc/permissions
目錄中的系統設定 XML 檔案中,明確授予平台簽章權限。如果平台已簽署的非系統應用程式未加入平台簽章權限的許可清單,當應用程式未在無法偵錯版本上簽署時,權限的作用就像這樣。
新增許可清單
您可以在單一 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
建構) 上授予權限。