Ab dem 27. März 2025 empfehlen wir, android-latest-release anstelle von aosp-main zu verwenden, um AOSP zu erstellen und Beiträge dazu zu leisten. Weitere Informationen finden Sie unter Änderungen am AOSP.
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Winscope-Tracing ist Teil des Android-Frameworks. Auf dieser Seite werden die Schritte zum Herunterladen, Erstellen und Ausführen der Winscope-Trace-Ansicht lokal beschrieben.
Winscope lokal erstellen
So richten Sie Ihren PC für die Ausführung des Winscope-Tracers ein:
Abhängigkeiten mit folgenden Befehlen installieren:
npm install
Führen Sie folgenden Befehl aus, um eine Liste der verfügbaren Befehle aufzurufen: npm run
Alle Produktions- und Testziele mit folgenden Befehlen erstellen:
npm run build:prod
So führen Sie Winscope aus:
npm run start
Separate Teile erstellen
Mit den folgenden Befehlen können Sie einzelne Teile von Winscope separat erstellen:
Befehl
Beschreibung
build:trace_processor
Die neueste Version von trace_processor von Perfecto wird ausgecheckt und neu erstellt.
build:protos
Die Proto-Definitionen werden neu kompiliert.
Tests ausführen
Winscope enthält Unit- und End-to-End-Tests. Verwenden Sie npm run
<command>, um sie auszuführen:
Befehl
Beschreibung
test:unit:ci
Führt die Unit-Tests in einem weniger ausführlichen Format für CI oder Presubmit-Hook aus.
test:unit:dev
Führt die Unittests in einem ausführlicheren Format für die lokale Entwicklung aus. In diesem Modus wird auf Änderungen geachtet und
die richtigen Tests werden automatisch noch einmal ausgeführt.
test:e2e
Führt die End-to-End-Tests aus, z. B. die für das -Tool-übergreifende Protokoll.
test:presubmit:quiet
Erstellt alle Presubmit-Unittests, Linter und
Graphanalysen in einem weniger ausführlichen Format für CI oder Presubmit-
Hook.
test:presubmit
Erstellt alle Presubmit-Einheitstests, Linter und
Graphanalysen in einem ausführlicheren Format für die lokale
Entwicklung.
test:all
Führt alle Tests (Unit- und End-to-End-Tests), Linter und
Graphanalysen in einem ausführlicheren Format für die lokale
Entwicklung aus.
Zuordnung von @IntDef aktualisieren
@IntDef ist eine Anmerkung, die unter Android verwendet wird, um die möglichen Werte einer Ganzzahl einzuschränken. Winscope verwendet eine Zuordnung dieser Anmerkungen, um anstelle der Ganzzahl den Namen des Werts anzuzeigen.
So aktualisieren Sie die @IntDef-Zuordnung:
Erstelle :framework-minus-apex-intdefs, damit der Annotationsvorprozessor ausgeführt wird:
mp:framework-minus-apex-intdefs
Kopieren Sie die generierte intDefMapping.json-Datei in das Repository für vorkonfigurierte Builds:
Laden Sie die Änderungen mit repo upload in Winscope hoch.
Weitere Befehle
Neben Build- und Testfunktionen enthalten Winscope-Scripts weitere Funktionen, wie in der Tabelle dargestellt. Verwenden Sie npm run command, um sie auszuführen:
Befehl
Beschreibung
format:check
Prüft mit prettier auf Probleme mit der Codeformatierung.
format:fix
Mit prettier werden Probleme mit der Codeformatierung geprüft und automatisch behoben.
eslint:check
Prüft mit eslint auf Probleme mit der Codeformatierung.
eslint:fix
Mit eslint werden Probleme mit der Codeformatierung geprüft und automatisch behoben.
tslint:check
Prüft mit tslint auf Probleme mit der Codeformatierung.
tslint:fix
Mit tslint werden Probleme mit der Codeformatierung geprüft und automatisch behoben.
deps_graph:check_cycles
Der Code wird auf zyklische Abhängigkeiten analysiert.
Fehlerbehebung
Versuchen Sie, das Problem anhand der folgenden Tipps zu beheben:
Fehler ProtocolError: missing required '<FIELD>' oder TypeError: Cannot
read property '<PROP>' of null
Das tritt auf, wenn die Tracedatei mit einer neuen Proto-Definition erstellt wurde, die neue erforderliche Felder enthält.
Achten Sie darauf, dass Sie den Trace in der richtigen Winscope-Version öffnen (Master, S oder R).
Wenn Sie das neue Feld im Proto erstellen, kompilieren Sie die Protos in Winscope mit npm run build:protos neu.
Einige installierte Abhängigkeitsversionen sind falsch (Build fehlschlägt)
Machen Sie die Änderungen an package.json und package-lock.json rückgängig. Entfernen Sie node_modules. Führen Sie npm install noch einmal aus.
Ich habe einer der Proto-Dateien ein neues Feld hinzugefügt. Wie kann ich sie anzeigen?
Winscope verwendet die Proto-Definitionen aus der Kompilierung, sodass neue Felder standardmäßig nicht angezeigt werden. Wenn Sie neue Felder anzeigen lassen möchten, erstellen Sie die Proto-Datei mit npm run build:protos neu.
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2025-08-24 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 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`."]]