實作已簽署的設定

「已簽署的設定」功能可讓您在 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 都包含 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
...