平台簽署的應用程式是指共用相同 (或相容) 簽署的應用程式
並產生一個憑證 (android
)。平台簽署的應用程式
系統應用程式 (位於系統映像檔分區) 或非系統應用程式。
平台簽署的共用 UID 是共用 UID (android:sharedUserId
),
含有平台簽署的應用程式。可進行偵錯的版本是指具有
android.os.Build.isDebuggable()
會傳回 true
,例如 userdebug
或 eng
建構應用程式
就過去來說,裝置製造商不太能掌控是哪個平台簽署
非系統應用程式可以加入平台簽署的共用 UID。在 Android 裝置上開始行動
15,製造商可明確允許平台簽署
非系統應用程式,藉此加入系統設定中平台簽署的共用 UID
/etc/permissions
目錄中的 XML 檔案。如果平台未簽署的非系統
應用程式未加入平台簽署的共用 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}