簽署設定功能可讓您在 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.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 簽名。簽名可用於驗證設定資料的來源。
使用者無法看到這項功能。
自訂
這項功能不提供自訂選項。我們不鼓勵原始設備製造商修改這項功能,包括替換按鍵。任何變更都可能導致 AndroidX 在受影響的裝置上無法正常運作。
驗證
CTS 測試 CtsSignedConfigHostTestCases
會驗證功能實作方式。
您也可以安裝適當的 APK 並檢查 adb logcat
輸出內容,手動測試這項功能:
$ adb install CtsSignedConfigTestAppV1.apk
...
$ adb logcat
...
I SignedConfig: Verified config using production key
...