Implementar a configuração assinada

O recurso de Configuração assinada permite incorporar a configuração de restrições de interface não SDK em APKs. Isso permite remover interfaces não SDK específicas da lista de proibições para que o AndroidX possa usá-las com segurança. Isso permite que a equipe do AndroidX adicione suporte para novos recursos nas versões do Android que já foram lançadas. Ele é compatível com o Android 10 e versões mais recentes.

O suporte adequado à Configuração assinada garante que as bibliotecas do AndroidX funcione corretamente nos dispositivos no futuro.

Não é possível personalizar esse recurso. Ele é totalmente compatível com o AOSP e não exige esforço do OEM para oferecer suporte.

Exemplos e origem

A implementação do recurso está no servidor do sistema em frameworks/base/services/core/java/com/android/server/signedconfig: O teste CTS CtsSignedConfigHostTestCases inclui um exemplo de uso e um exemplo de configuração em cts/hostsidetests/signedconfig/app/version1_AndroidManifest.xml.

Implementação

Nenhum esforço é necessário para oferecer suporte ao recurso e não há hardware específico e cumprimento de requisitos regulatórios.

O recurso usa duas chaves de metadados de aplicativo para incorporar a configuração e uma em APKs. Essas chaves são android.settings.global e android.settings.global.signature. Se ou quando as bibliotecas do AndroidX exigirem que interfaces não SDK sejam removidas da lista de proibição no futuro, os valores dessas chaves serão publicados pela equipe do Android e/ou como parte do AndroidX.

As chaves de metadados do APK android.settings.global e android.settings.global.signature contêm dados codificados em base64. O valor da chave android.settings.global são valores de configuração codificados em JSON para serem aplicados às configurações globais em SettingsProvider. O valor de android.settings.global.signature é uma assinatura ECDSA-p256 dos dados JSON. A assinatura é usada para verificar a origem dos dados de configuração.

O recurso não fica visível para o usuário.

Personalização

O recurso não se destina à personalização. Não é recomendável que os OEMs modifiquem o recurso, incluindo a substituição das chaves. As mudanças feitas nele são provavelmente fará com que o AndroidX não funcione corretamente nos dispositivos afetados da futuro.

Validação

O teste CTS CtsSignedConfigHostTestCases verifica a implementação do recurso.

Também é possível testar o recurso manualmente instalando um APK apropriado e inspecionando a saída adb logcat:

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