À partir du 27 mars 2025, nous vous recommandons d'utiliser android-latest-release au lieu de aosp-main pour créer et contribuer à AOSP. Pour en savoir plus, consultez la section Modifications apportées à AOSP.
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
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 trace Winscope localement.
Compiler Winscope en local
Pour configurer votre PC afin d'exécuter le traceur Winscope, procédez comme suit:
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 proto.
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 du protocole inter-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 presubmit 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:
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>' ou TypeError: 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 et package-lock.json. Supprimez node_modules. Exécutez npm install à nouveau.
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.
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/08/24 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/08/24 (UTC)."],[],[],null,["# Run Winscope\n\nWinscope tracing is part of the Android framework. This page outlines the\nsteps required to download, build, and run the Winscope trace viewer locally.\n\nBuild Winscope locally\n----------------------\n\nFollow these steps to set up your PC to run the Winscope tracer:\n\n1. [Download the Android source](/docs/setup/build/building).\n2. Navigate to the Winscope folder:\n\n cd development/tools/winscope\n\n3. Install dependencies using:\n\n npm install\n\n To see a list of available commands, run: `npm run`\n4. Build all prod and test targets using:\n\n npm run build:prod\n\n5. Run Winscope using:\n\n npm run start\n\n| **Note:** You can also download and build Winscope to host on a standard web server to get a shareable link to the tool.\n\nBuild separate parts\n--------------------\n\nYou can build individual parts of Winscope separately using the following\ncommands:\n\n| Command | Description |\n|-------------------------|-----------------------------------------------------------------------------|\n| `build:trace_processor` | Checks out and rebuilds the latest version of Perfetto's `trace_processor`. |\n| `build:protos` | Recompiles the proto definitions. |\n\nRun tests\n---------\n\n| **Tip:** Winscope doesn't build on Soong and can't be built by Tradefed, so it's recommended to have a local Git hook to the tests in your local environment.\n\nWinscope contains unit and end-to-end tests. To run them use `npm run\n\u003ccommand\u003e`:\n\n| Command | Description |\n|------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------|\n| `test:unit:ci` | Runs the unit tests in a less verbose format for CI or presubmit hook. |\n| `test:unit:dev` | Runs the unit tests in a more verbose format for local development. This mode watches for changes and automatically reruns the correct tests. |\n| `test:e2e` | Runs the end-to-end tests, such as those for the cross-tool protocol. |\n| `test:presubmit:quiet` | Builds all presubmit unit tests, linters, and graph analysis in a less verbose format for CI or presubmit hook. |\n| `test:presubmit` | Builds all presubmit unit tests, linters, and graph analysis in a more verbose format for local development. |\n| `test:all` | Runs all tests (unit and end-to-end), linters, and graph analysis in a more verbose format for local development. |\n\n### Update @IntDef mapping\n\n`@IntDef` is an annotation used in Android to restrict the possible values of an\ninteger. Winscope uses a mapping of these annotations to display the name of the\nvalue instead of the integer.\n\nTo update the `@IntDef` mapping, do the following:\n\n1. Build `:framework-minus-apex-intdefs` for the annotation preprocessor to run:\n\n mp :framework-minus-apex-intdefs\n\n2. Copy the generated `intDefMapping.json` file to the prebuilts repository:\n\n $ 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) \u003e ./development/tools/winscope/src/common/intDefMapping.json\n\n3. Upload the changes in Winscope using `repo upload`.\n\nOther commands\n--------------\n\nIn addition to build and tests, Winscope scripts contain other capabilities, as\nshown in the table. To run them use `npm run `\u003cvar translate=\"no\"\u003ecommand\u003c/var\u003e:\n\n| Command | Description |\n|---------------------------|----------------------------------------------------------------|\n| `format:check` | Checks for code formatting issues using `prettier`. |\n| `format:fix` | Checks and auto fixes code formatting issues using `prettier`. |\n| `eslint:check` | Checks for code formatting issues using `eslint`. |\n| `eslint:fix` | Checks and auto fixes code formatting issues using `eslint`. |\n| `tslint:check` | Checks for code formatting issues using `tslint`. |\n| `tslint:fix` | Checks and auto fixes code formatting issues using `tslint`. |\n| `deps_graph:check_cycles` | Analyzes the code for cyclical dependencies. |\n\nTroubleshoot\n------------\n\nUse the following tips for troubleshooting:\n\n- **Error `ProtocolError: missing required '\u003cFIELD\u003e'` or `TypeError: Cannot\n read property '\u003cPROP\u003e' of null`**\n\n - This occurs when the trace file was created with a new proto definition,\n containing new *required* fields.\n\n 1. Make sure you're opening the trace on the correct Winscope version (master, S, or R).\n 2. If you create the new field on the proto, recompile the protos in\n Winscope using `npm run build:protos`.\n\n | **Note:** You shouldn't need a new required field, because the protos should be backward compatible.\n- **Some installed dependency versions are wrong (build fails)**\n\n - Revert changes to `package.json` and `package-lock.json`. Remove `node_modules`. Run `npm install` again.\n- **I added a new field to one of the proto files. How do I display it?**\n\n - Winscope uses the proto definitions from when it was compiled, so new fields won't appear by default. To show new fields, rebuild the protos using `npm run build:protos`."]]