Implementando la configuración firmada

La función Signed Config permite integrar la configuración de restricciones de interfaz que no son del SDK en los APK. Esto permite eliminar interfaces específicas que no pertenecen al SDK de la lista negra, para permitir que AndroidX las use de manera segura. Esto permite que el equipo de AndroidX agregue soporte para nuevas funciones en las versiones de Android que ya se han lanzado. Es compatible con Android 10 y versiones posteriores.

El soporte adecuado de Signed Config garantiza que las bibliotecas de AndroidX funcionen correctamente en los dispositivos en el futuro.

No es posible personalizar esta función. Es totalmente compatible con AOSP y no requiere ningún esfuerzo de OEM para admitirlo.

Ejemplos y fuente

La implementación de la función se encuentra en el servidor del sistema en frameworks/base/services/core/java/com/android/server/signedconfig . La prueba CTS CtsSignedConfigHostTestCases incluye un uso de ejemplo y una configuración de ejemplo en cts/hostsidetests/signedconfig/app/version1_AndroidManifest.xml .

Implementación

No se requiere ningún esfuerzo para admitir la función y no hay requisitos de hardware específicos.

La función utiliza dos claves de metadatos de la aplicación para incrustar la configuración y una firma dentro de los APK. Esas claves son android.settings.global y android.settings.global.signature . Si las bibliotecas de AndroidX requieren que las interfaces que no pertenecen al SDK se eliminen de la lista negra en el futuro, los valores de estas claves serán publicados por el equipo de Android y/o como parte de AndroidX.

Las claves de metadatos de APK android.settings.global y android.settings.global.signature contienen datos codificados en base 64. El valor de la clave android.settings.global son valores de configuración codificados en JSON que se aplicarán a la configuración global en SettingsProvider . El valor de android.settings.global.signature es una firma ECDSA-p256 de los datos JSON. La firma se utiliza para verificar el origen de los datos de configuración.

La característica no es visible para el usuario.

personalización

La característica no está pensada para la personalización. Se desaconseja que los OEM modifiquen la función, incluido el reemplazo de las claves. Es probable que cualquier cambio en él provoque que AndroidX no funcione correctamente en los dispositivos afectados en el futuro.

Validación

La prueba CTS CtsSignedConfigHostTestCases verifica la implementación de la característica.

También puede probar la función manualmente instalando un APK adecuado e inspeccionando el adb logcat :

$ adb install CtsSignedConfigTestAppV1.apk
...
$ adb logcat
...
I SignedConfig: Verified config using production key
...