平台簽署的共用 UID 許可清單

平台簽署的應用程式是指與平台套件 (android) 共用相同 (或相容) 簽署憑證的應用程式。平台簽署的應用程式可以是系統應用程式 (位於系統映像檔分區),也可以是非系統應用程式。平台簽署的共用 UID 是指包含平台簽署應用程式的共用 UID (android:sharedUserId)。可進行偵錯的版本是指 android.os.Build.isDebuggable() 傳回 true 的版本,例如 userdebugeng 版本。

過去,裝置製造商幾乎無法控制哪些平台簽署的非系統應用程式可以加入平台簽署的共用 UID。從 Android 15 開始,製造商可以明確允許平台簽署的非系統應用程式加入 /etc/permissions 目錄中系統設定 XML 檔案中的平台簽署共用 UID。如果平台簽署的非系統應用程式未新增至平台簽署共用 UID 的許可清單,且應用程式仍嘗試加入平台簽署共用 UID (在資訊清單中使用 android:sharedUserId),則該應用程式無法在無法偵錯的版本上安裝。

新增許可清單

您可以在單一 XML 檔案或多個 XML 檔案中列出應用程式許可清單,類似 frameworks/base/data/etc/package-shareduid-allowlist.xml

<!--
This XML defines an allowlist for packages that want to join a particular shared-uid.
If a non-system package that is signed with platform signature, is trying to join a particular
shared-uid, and not in this list, the installation will fail.

- The "package" XML attribute refers to the app's package name.
- The "shareduid" XML attribute refers to the shared uid name.
  -->

<config>
    <allow-package-shareduid package="android.test.settings" shareduid="android.uid.system" />
</config>

尋找遺漏的許可清單

如要找出遺漏的許可清單項目,請嘗試在無法偵錯的版本上安裝平台簽署的非系統應用程式,然後檢查是否仍可安裝。如果沒有,您可以檢查裝置記錄,查看以下格式的警告訊息:

Non-preload app {PACKAGE_NAME} signed with platform signature and joining shared uid: {SHARED_UID_NAME}