La fonctionnalité de configuration signée permet d'intégrer la configuration des restrictions d'interface non SDK dans les fichiers APK. Cela permet de supprimer des interfaces spécifiques non SDK de la liste noire, pour permettre à AndroidX de les utiliser en toute sécurité. Cela permet à l'équipe AndroidX d'ajouter la prise en charge de nouvelles fonctionnalités sur les versions Android qui ont déjà été publiées. Il est pris en charge dans Android 10 et versions ultérieures.
La prise en charge correcte de la configuration signée garantit que les bibliothèques AndroidX fonctionneront correctement sur les appareils à l'avenir.
Aucune personnalisation de cette fonctionnalité n'est possible. Il est entièrement pris en charge dans AOSP et ne nécessite aucun effort OEM pour le prendre en charge.
Exemples et source
L'implémentation de la fonctionnalité se trouve dans le serveur système à frameworks/base/services/core/java/com/android/server/signedconfig
. Le test CTS CtsSignedConfigHostTestCases
inclut un exemple d'utilisation et un exemple de configuration dans cts/hostsidetests/signedconfig/app/version1_AndroidManifest.xml
.
Mise en œuvre
Aucun effort n'est requis pour prendre en charge la fonctionnalité, et il n'y a aucune configuration matérielle spécifique requise.
La fonctionnalité utilise deux clés de métadonnées d'application pour intégrer la configuration et une signature dans les fichiers APK. Ces clés sont android.settings.global
et android.settings.global.signature
. Si ou lorsque les bibliothèques AndroidX nécessitent que les interfaces non SDK soient supprimées de la liste noire à l'avenir, les valeurs de ces clés seront publiées par l'équipe Android et/ou dans le cadre d'AndroidX.
Les clés de métadonnées APK android.settings.global
et android.settings.global.signature
contiennent toutes deux des données encodées en base 64. La valeur de la clé android.settings.global
correspond aux valeurs de configuration codées JSON à appliquer aux paramètres globaux dans SettingsProvider
. La valeur pour android.settings.global.signature
est une signature ECDSA-p256 des données JSON. La signature est utilisée pour vérifier l'origine des données de configuration.
La fonctionnalité n'est pas visible par l'utilisateur.
Personnalisation
La fonctionnalité n'est pas destinée à la personnalisation. Il est déconseillé aux OEM de modifier la fonctionnalité, y compris de remplacer les clés. Toute modification apportée est susceptible d'empêcher AndroidX de fonctionner correctement sur les appareils concernés à l'avenir.
Validation
Le test CTS CtsSignedConfigHostTestCases
vérifie l'implémentation de la fonctionnalité.
Vous pouvez également tester la fonctionnalité manuellement en installant un APK approprié et en inspectant la sortie adb logcat
:
$ adb install CtsSignedConfigTestAppV1.apk
...
$ adb logcat
...
I SignedConfig: Verified config using production key
...