Implementa la configuración firmada

La función de configuración firmada permite incorporar ajustes de restricciones de interfaz que no pertenecen al SDK en los APK. De esa manera, se pueden quitar de la lista negra interfaces específicas que no pertenecen al SDK para que AndroidX pueda usarlas de forma segura. Esto permite que el equipo de AndroidX agregue compatibilidad con funciones nuevas en versiones de Android que ya se lanzaron. Es compatible con Android 10 y versiones posteriores.

La compatibilidad adecuada con la configuración firmada 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 admitirla.

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 de CTS CtsSignedConfigHostTestCases incluye un ejemplo de uso 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 usa dos claves de metadatos de aplicación para incorporar la configuración y una firma dentro de los APK. Esas claves son android.settings.global y android.settings.global.signature. Cuando las bibliotecas de AndroidX requieran que las interfaces que no pertenecen al SDK se quiten de la lista negra en el futuro, el equipo de Android publicará los valores de estas claves o como parte de AndroidX.

Las claves de metadatos del APK android.settings.global y android.settings.global.signature contienen datos codificados en Base64. 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 usa para verificar el origen de los datos de configuración.

La función no es visible para el usuario.

Personalización

La función no está pensada para la personalización. No se aconseja a los OEM modificar la función, incluido el reemplazo de las claves. Cualquier cambio que realices probablemente haga que AndroidX no funcione correctamente en los dispositivos afectados en el futuro.

Validación

La prueba de CTS CtsSignedConfigHostTestCases verifica la implementación de la función.

También puedes probar la función de forma manual. Para ello, instala un APK adecuado y, luego, inspecciona el resultado de adb logcat:

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