O recurso de configuração assinada permite incorporar a configuração de restrições de interface que não sejam 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 a novos recursos em versões do Android que já foram lançadas. Ele tem suporte no Android 10 e versões mais recentes.
O suporte adequado à Signed Config garante que as bibliotecas do AndroidX funcionem corretamente em dispositivos no futuro.
Não é possível personalizar esse recurso. Ele tem suporte total no 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
Não é necessário fazer esforço para oferecer suporte ao recurso, e não há requisitos de hardware específicos.
O recurso usa duas chaves de metadados do aplicativo para incorporar a configuração e uma
assinatura nos 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 é visível para o usuário.
Personalização
O recurso não é destinado à personalização. Não é recomendável que os OEMs modifiquem o recurso, incluindo a substituição das chaves. Qualquer mudança nele pode fazer com que o AndroidX não funcione corretamente nos dispositivos afetados no 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
...