O recurso Signed Config permite incorporar configurações de restrições de interface não SDK em APKs. Isso permite remover interfaces específicas não SDK da lista negra, para permitir que o AndroidX as use 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. É compatível com Android 10 e posterior.
O suporte adequado ao Signed Config garante que as bibliotecas AndroidX funcionarão corretamente em dispositivos no futuro.
Nenhuma personalização deste recurso é possível. É totalmente compatível com AOSP e não requer esforço de OEM para suportá-lo.
Exemplos e fonte
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 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á requisitos específicos de hardware.
O recurso usa duas chaves de metadados de aplicativo para incorporar configuração e uma assinatura dentro de 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 negra 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 base 64. O valor da chave android.settings.global
são valores de configuração codificados em JSON a serem aplicados às configurações globais em SettingsProvider
. O valor para 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.
Costumização
O recurso não se destina à personalização. Os OEMs são desencorajados de modificar o recurso, incluindo a substituição das chaves. Quaisquer alterações provavelmente farão 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.
Você também pode 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
...