簽章配置功能允許在 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.global
和android.settings.global.signature
。如果將來 AndroidX 函式庫要求將非 SDK 介面從黑名單中刪除,這些金鑰的值將由 Android 團隊和/或作為 AndroidX 的一部分發布。
APK 元資料鍵android.settings.global
和android.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
...