Implémentation de la journalisation étendue des fournisseurs

Android 11 ajoute un nouveau HAL, IDumpstateDevice (version 1.1). Ce HAL expose de nouvelles méthodes pour couvrir plus étroitement les journaux des fournisseurs inclus dans les rapports de bogues standard, ainsi que pour permettre aux builds utilisateur d'activer et de désactiver la journalisation des fournisseurs (la valeur par défaut pour les builds utilisateur est désactivée). Cela donne aux OEM plus de contrôle sur ce qui est inclus dans certains types de rapports de bogues.

Cette fonctionnalité affecte les OEM s’ils choisissent d’implémenter cette HAL facultative. Les SoC peuvent être affectés, en fonction de ce que l'OEM choisit d'exposer avec ce HAL. Il n’y a aucun impact attendu pour les transporteurs.

Ce que vous incluez dans les rapports de bogues dépend des informations que vous jugez pertinentes pour le débogage, mais en général, il est préférable d'être plus verbeux.

Exemples et source

Il existe une implémentation par défaut de la version (obsolète) 1.0 de IDumpstateDevice qui montre un exemple d'utilisation de la bibliothèque utilitaire dumpstate : frameworks/native/cmds/dumpstate/DumpstateUtil.h . Il existe également une implémentation Cuttlefish du HAL 1.1 : device/google/cuttlefish/guest/monitoring/dumpstate_ext/* .

Le code source se trouve ici :

Mise en œuvre

Pour implémenter ce HAL, implémentez l'interface HAL android.hardware.dumpstate@1.1::IDumpstateDevice . Il existe de nombreuses valeurs DumpstateMode possibles, mais toutes ne seront probablement pas prises en charge par un seul appareil (par exemple, WEAR pour les appareils non-Wear OS).

L’implémentation du dumpstate HAL est facultative. Tous les nouveaux appareils lancés avec Android 11 DOIVENT implémenter IDumpstateDevice 1.1 s'ils implémentent le Dumpstate HAL. Les appareils qui ont déjà implémenté IDumpstateDevice 1.0 avant Android 11 devraient être relativement faciles à mettre à niveau vers la version 1.1, et cela est fortement recommandé, car cela réduit considérablement la quantité d'informations privées superflues incluses dans les rapports de bogues.

Cette fonctionnalité dépend des modifications principales du dumpstate également incluses avec Android 11, situées sous frameworks/native/cmds/dumpstate .

La mise en œuvre de ce HAL nécessitera probablement quelques modifications SEPolicy de certaines propriétés système, fichiers, etc. pour que les choses fonctionnent pleinement, et nécessitera une coordination avec les fournisseurs pour transférer toutes les informations pertinentes dans les rapports de bogues.

Personnalisation

L'utilisateur de l'appareil peut activer ou désactiver la connexion du fournisseur à l'aide des paramètres du développeur. Lorsqu'il est désactivé, dumpstateBoard_1_1 peut toujours afficher des informations essentielles minimales telles que déterminées par l'OEM. La désactivation de la journalisation du fournisseur permet à IDumpstateDevice::dumpstateBoard d'ajouter uniquement les informations essentielles à un rapport de bogue, tandis que son activation inclut toutes les informations choisies par l'OEM.

Vous pouvez modifier dumpstate.cpp (qui appelle les méthodes IDumpstateDevice HAL), par exemple, pour augmenter le délai d'attente accordé à dumpstateBoard . Cependant, la logique de base de dumpstate.cpp devrait rester inchangée.

Les délais d'attente peuvent avoir n'importe quelle valeur, mais ils ne devraient pas augmenter considérablement le temps nécessaire à l'exécution d'un rapport de bogue. En particulier, DumpstateMode::CONNECTIVITY est très sensible au temps et doit s'exécuter aussi rapidement que possible pour collecter tous les journaux de modem/Wi-Fi/réseau pertinents.

Validation

Il existe un test VTS pour l'implémentation d'IDumpstateDevice, ainsi que des tests unitaires fonctionnels pour la fonctionnalité générale BugreportManager .

Le scénario de test manuel recommandé est frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java .