實施簽名配置

簽章配置功能允許在 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
...