实现签名配置

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

签名配置功能允许在 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.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
...