實作已簽署的設定

已簽署設定功能允許在 APK 中嵌入非 SDK 介面限制的設定。這可讓您從黑名單中移除特定非 SDK 介面,讓 AndroidX 安全地使用這些介面。這可讓 AndroidX 團隊在已發布的 Android 版本中新增支援新功能。Android 10 以上版本支援這項功能。

正確支援 Signed Config,可確保 AndroidX 程式庫日後可在裝置上正常運作。

無法自訂這項功能。這項 Android 開放原始碼計畫全面支援,不需透過原始設備製造商 (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
...