「已簽署的設定」功能可讓您在 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
都包含 Base64 編碼資料。鍵 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
...