Implémenter la configuration signée

La fonctionnalité de configuration signée permet d'intégrer la configuration des restrictions d'interface non SDK dans les APK. Cela permet de supprimer des interfaces non SDK spécifiques de la liste noire, afin de 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 d'Android déjà publiées. Elle est compatible avec 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.

Il n'est pas possible de personnaliser cette fonctionnalité. Il est entièrement compatible avec AOSP et ne nécessite aucun effort de la part des OEM pour être pris en charge.

Exemples et source

L'implémentation de la fonctionnalité se trouve dans le serveur système à l'adresse 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.

Implémentation

Aucun effort n'est requis pour prendre en charge la fonctionnalité, et il n'y a pas d'exigences matérielles spécifiques.

Cette fonctionnalité utilise deux clés de métadonnées d'application pour intégrer la configuration et une signature dans les APK. Ces clés sont android.settings.global et android.settings.global.signature. Si ou lorsque les bibliothèques AndroidX nécessiteront que des 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 AndroidX.

Les clés de métadonnées APK android.settings.global et android.settings.global.signature contiennent toutes les deux des données encodées en base64. La valeur de la clé android.settings.global correspond aux valeurs de configuration encodées au format JSON à appliquer aux paramètres généraux dans SettingsProvider. La valeur de android.settings.global.signature est une signature ECDSA-p256 des données JSON. La signature permet de vérifier l'origine des données de configuration.

La fonctionnalité n'est pas visible par les utilisateurs.

Personnalisation

Cette fonctionnalité n'est pas destinée à être personnalisée. Nous déconseillons aux OEM de modifier cette fonctionnalité, y compris de remplacer les clés. Toute modification apportée à ce fichier 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
...