Le traçage Winscope fait partie du framework Android. Cette page décrit les étapes requises pour télécharger, compiler et exécuter le visualiseur de traces Winscope localement.
Compiler Winscope en local
Pour configurer votre PC afin d'exécuter le traceur Winscope, procédez comme suit:
- Téléchargez le code source Android.
Accédez au dossier Winscope:
cd development/tools/winscope
Installez les dépendances à l'aide de:
npm install
Pour afficher la liste des commandes disponibles, exécutez la commande suivante:
npm run
.Compilez toutes les cibles de production et de test à l'aide de:
npm run build:prod
Exécutez Winscope à l'aide de:
npm run start
Créer des parties distinctes
Vous pouvez compiler des parties individuelles de Winscope séparément à l'aide des commandes suivantes:
Commande | Description |
---|---|
build:trace_processor |
Vérifie et reconstruit la dernière version de trace_processor de Perfetto. |
build:protos |
Recompile les définitions de protocole. |
Exécuter des tests
Winscope contient des tests unitaires et de bout en bout. Pour les exécuter, utilisez npm run
<command>
:
Commande | Description |
---|---|
test:unit:ci |
Exécute les tests unitaires dans un format moins verbeux pour CI ou le hook d'envoi préalable. |
test:unit:dev |
Exécute les tests unitaires dans un format plus détaillé pour le développement local. Ce mode recherche les modifications et réexécute automatiquement les tests appropriés. |
test:e2e |
Exécute les tests de bout en bout, tels que ceux pour le protocole multi-outils . |
test:presubmit:quiet |
Crée tous les tests unitaires, les analyseurs de code et l'analyse de graphes avant l'envoi dans un format moins verbeux pour l'intégration continue ou le hook avant l'envoi. |
test:presubmit |
Crée tous les tests unitaires, les analyseurs de code et l'analyse de graphes pré-soumission dans un format plus détaillé pour le développement local. |
test:all |
Exécute tous les tests (unitaires et de bout en bout), les analyseurs de code et l'analyse de graphes dans un format plus détaillé pour le développement local. |
Mettre à jour le mappage @IntDef
@IntDef
est une annotation utilisée dans Android pour limiter les valeurs possibles d'un entier. Winscope utilise un mappage de ces annotations pour afficher le nom de la valeur au lieu de l'entier.
Pour mettre à jour le mappage @IntDef
, procédez comme suit:
Créez
:framework-minus-apex-intdefs
pour que le préprocesseur d'annotation s'exécute:mp :framework-minus-apex-intdefs
Copiez le fichier
intDefMapping.json
généré dans le dépôt des précompilés:$ python3 -c 'import sys,json,collections; print(json.dumps(collections.OrderedDict(sorted(collections.ChainMap(*map(lambda x:json.load(open(x)), sys.argv[1:])).items())), indent=2))' $(find out/soong/.intermediates/frameworks/base -iname intDefMapping.json) > ./development/tools/winscope/src/common/intDefMapping.json
Importez les modifications dans Winscope à l'aide de
repo upload
.
Autres commandes
En plus de la compilation et des tests, les scripts Winscope contiennent d'autres fonctionnalités, comme indiqué dans le tableau. Pour les exécuter, utilisez npm run command
:
Commande | Description |
---|---|
format:check |
Recherche les problèmes de mise en forme du code à l'aide de prettier . |
format:fix |
Vérifie et corrige automatiquement les problèmes de mise en forme du code à l'aide de prettier . |
eslint:check |
Recherche les problèmes de mise en forme du code à l'aide de eslint . |
eslint:fix |
Vérifie et corrige automatiquement les problèmes de mise en forme du code à l'aide de eslint . |
tslint:check |
Recherche les problèmes de mise en forme du code à l'aide de tslint . |
tslint:fix |
Vérifie et corrige automatiquement les problèmes de mise en forme du code à l'aide de tslint . |
deps_graph:check_cycles |
Analyse le code pour détecter les dépendances cycliques. |
Dépannage
Suivez les conseils de dépannage ci-dessous:
Erreur
ProtocolError: missing required '<FIELD>'
ouTypeError: Cannot read property '<PROP>' of null
Cela se produit lorsque le fichier de trace a été créé avec une nouvelle définition de protocole contenant de nouveaux champs obligatoires.
- Assurez-vous d'ouvrir la trace sur la bonne version de Winscope (master, S ou R).
Si vous créez le nouveau champ sur le proto, recompilez les protos dans Winscope à l'aide de
npm run build:protos
.
Certaines versions de dépendances installées sont incorrectes (échec de la compilation)
- Annulez les modifications apportées à
package.json
etpackage-lock.json
. Supprimeznode_modules
. Exécuteznpm install
à nouveau.
- Annulez les modifications apportées à
J'ai ajouté un champ à l'un des fichiers proto. Comment l'afficher ?
- Winscope utilise les définitions de proto de la compilation. Par conséquent, les nouveaux champs n'apparaissent pas par défaut. Pour afficher de nouveaux champs, reconstruisez les protos à l'aide de
npm run build:protos
.
- Winscope utilise les définitions de proto de la compilation. Par conséquent, les nouveaux champs n'apparaissent pas par défaut. Pour afficher de nouveaux champs, reconstruisez les protos à l'aide de