Implémentation de 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 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 déjà publiées. Il est pris en charge dans Android 10 et versions ultérieures.

La prise en charge correcte de Signed Config 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

La mise en œuvre de fonction est dans le serveur du système à des frameworks/base/services/core/java/com/android/server/signedconfig . Le test CTS CtsSignedConfigHostTestCases comprend l' utilisation d'exemple, et un exemple de configuration en 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 pas d'exigences matérielles spécifiques.

La 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é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 touches de métadonnées APK android.settings.global et android.settings.global.signature contiennent tous les deux base 64 données codées. La valeur de clé android.settings.global est des valeurs de configuration codées JSON à appliquer aux paramètres globaux dans SettingsProvider . La valeur de 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. Les OEM sont découragés de modifier la fonctionnalité, y compris le remplacement des 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 la mise en œuvre de la fonction.

Vous pouvez également tester la fonction manuellement en installant un APK approprié et l' inspection de la adb logcat sortie:

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