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:
- Android-Quellcode herunterladen
Rufen Sie den Ordner „Winscope“ auf:
cd development/tools/winscope
Installieren Sie Abhängigkeiten mit:
npm install
Führen Sie folgenden Befehl aus, um eine Liste der verfügbaren Befehle aufzurufen:
npm run
So erstellen Sie alle Produktions- und Testziele:
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-Einheitstests, 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 für @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 Zuordnung für @IntDef
:
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:$ 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
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 können Sie Probleme mit der Codeformatierung prüfen und automatisch beheben. |
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>'
oderTypeError: 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
undpackage-lock.json
rückgängig. Entfernen Sienode_modules
. Führen Sienpm install
noch einmal aus.
- Machen Sie die Änderungen an
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.
- 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