實現簽名配置

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

正確支持簽名配置可確保 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都包含基64編碼的數據。 key的值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
...