實現簽名配置

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

簽名配置功能允許在 APK 中嵌入非 SDK 接口限制的配置。這允許從黑名單中刪除特定的非 SDK 接口,以允許 AndroidX 安全地使用它們。這允許 AndroidX 團隊在已發布的 Android 版本上添加對新功能的支持。它在 Android 10 及更高版本中受支持。

正確支持 Signed Config 可確保 AndroidX 庫將來在設備上正常運行。

無法自定義此功能。它在 AOSP 中得到完全支持,無需 OEM 努力來支持它。

示例和來源

功能實現位於frameworks/base/services/core/java/com/android/server/signedconfig的系統服務器中。 CTS 測試CtsSignedConfigHostTestCases包括示例用法和cts/hostsidetests/signedconfig/app/version1_AndroidManifest.xml中的示例配置。

執行

支持該功能不需要任何努力,也沒有特定的硬件要求。

該功能使用兩個應用程序元數據密鑰在 APK 中嵌入配置和簽名。這些鍵是android.settings.globalandroid.settings.global.signature 。如果將來 AndroidX 庫需要將非 SDK 接口從黑名單中刪除,這些鍵的值將由 Android 團隊和/或作為 AndroidX 的一部分發布。

APK 元數據鍵android.settings.globalandroid.settings.global.signature都包含 base-64 編碼數據。鍵android.settings.global的值是 JSON 編碼的配置值,將應用於SettingsProvider中的全局設置。 android.settings.global.signature的值是 JSON 數據的 ECDSA-p256 簽名。簽名用於驗證配置數據的來源。

該功能對用戶不可見。

定制

該功能不適用於自定義。不鼓勵 OEM 修改該功能,包括更換密鑰。對其進行的任何更改都可能導致 AndroidX 將來無法在受影響的設備上正常運行。

驗證

CTS 測試CtsSignedConfigHostTestCases驗證功能實現。

您還可以通過安裝適當的 APK 並檢查adb logcat輸出來手動測試該功能:

$ adb install CtsSignedConfigTestAppV1.apk
...
$ adb logcat
...
I SignedConfig: Verified config using production key
...