Les appareils qui démarrent avec Android 12 à l'aide de versions de kernel supérieures à la version 5.4 doivent être livrés avec le kernel GKI. Pour que les partenaires puissent accéder à DebugFS
dans les builds userdebug pendant leur développement sur le kernel GKI, la configuration du kernel CONFIG_DEBUG_FS
est activée dans la defconfig GKI.
Ne jamais monter DebugFS
dans les builds utilisateur pour les appareils lancés sur Android 12.
Les builds userdebug offrent une meilleure couverture de test que les builds utilisateur et sont soumis à de nombreux tests tout au long du cycle de développement. Le plan suivant minimise la différence entre les deux types de builds en ce qui concerne l'accès DebugFS
et offre les avantages suivants:
- Empêche les builds userdebug de dépendre accidentellement de
DebugFS
pour de nouvelles fonctionnalités - Assurez-vous que toute fonctionnalité existante qui est endommagée par l'absence de DebugFS est connue dès le début du cycle de développement.
Les accès Debugfs dans les builds userdebug sont classés comme suit:
- Initialisations de fichiers
DebugFS
lors du démarrage de l'appareil, telles qu'un accès en écriture à un fichier dansDebugFS
pour activer la collecte de données de débogage. - Génération d'un rapport de bug: le HAL dumpstate lit les fichiers
DebugFS
lorsqueDumpstateBoard()
est appelé pardumpstate
. Ces informations font partie du rapport de bug. - Tests et validations spécifiques à chaque appareil
Le tableau suivant décrit la prise en charge de chacune de ces trois catégories dans Android 12. Notez que ce qui suit ne s'applique qu'aux builds userdebug, car DebugFS
ne peut pas être installé dans les builds utilisateur.
Cas d'utilisation | Build userdebug d'Android 12 |
---|---|
Initialisation unique des fichiers DebugFS au démarrage
Cet accès ne se produit qu'une seule fois au démarrage.
|
Le HAL Dumpstate effectue cette opération lors de l'initialisation du HAL. Pour activer cette fonctionnalité, init associe DebugFS dans les builds userdebug avant l'initialisation du HAL.
Init appelle umount() sur DebugFS une fois le démarrage de l'appareil terminé.
|
Génération de rapports de bugs: le HAL dumpstate lit les fichiers DebugFS , qui font partie du rapport de bug.
|
Effectué par le HAL dumpstate dans DumpstateBoard() lorsqu'il est appelé par dumpstate (DumpstateDevice.cpp).
L'outil dumpstate (qui fait partie du framework Android) garantit que DebugFS est installé lors de l'appel.
|
Tests et validation spécifiques à l'appareil | Adb root et shell. Montez DebugFS à partir de l'interface système adb avec un accès root1.
|
1Pour monter DebugFS
à partir de adb shell
avec un accès racine, utilisez la commande suivante:
adb shell mount -t debugfs debugfs /sys/kernel/debug
.
Actions requises du partenaire
Les partenaires doivent appliquer les mesures suivantes en fonction de ces modifications sur les appareils Android 12:
- Effectuez toutes les initialisations au démarrage des nœuds
DebugFS
lors de l'initialisation du HAL dumpstate. Pour obtenir un exemple, consultez DNM : Exemple d'initialisation au démarrage des fichiersDebugFS
. - N'autorisez pas l'accès à
DebugFS
au moment de l'exécution. Les exceptions suivantes s'appliquent:- Génération d'un rapport de bug (provenant du HAL dumpstate)
- Test et validation (accessibles par
adb root
etshell
: assurez-vous que DebugFS est installé en premier)
Les développeurs peuvent définir la propriété persistante de débogage persist.dbg.keep_debugfs_mounted
pour maintenir DebugFs
monté lors des redémarrages sur les builds userdebug et eng.
Les tests de conformité GTS garantissent que le système de fichiers DebugFS
n'est pas installé dans les builds utilisateur. Les instructions neverallow
de Sepolicy garantissent que, sur les appareils lancés sur Android 12 ou version ultérieure, les processus non autorisés ne sont pas autorisés à accéder à DebugFs
.