Signed Config 功能允许在 APK 中嵌入非 SDK 接口限制的配置。这样可以从黑名单中移除特定的非 SDK 接口,从而使 AndroidX 可以安全地使用它们。这允许 AndroidX 团队在已发布的 Android 版本上添加对新功能的支持。Android 10 及更高版本支持此功能。
正确支持 Signed Config 可确保 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
的值是要应用于 SettingsProvider
中全局设置的 JSON 编码配置值。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
...