Winscope ausführen

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:

  1. Android-Quellcode herunterladen
  2. Rufen Sie den Ordner „Winscope“ auf:

    cd development/tools/winscope
    
  3. Installieren Sie Abhängigkeiten mit:

    npm install
    

    Führen Sie folgenden Befehl aus, um eine Liste der verfügbaren Befehle aufzurufen: npm run

  4. So erstellen Sie alle Produktions- und Testziele:

    npm run build:prod
    
  5. 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:

  1. Erstelle :framework-minus-apex-intdefs, damit der Annotationsvorprozessor ausgeführt wird:

    mp :framework-minus-apex-intdefs
    
  2. 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
    
  3. 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>' 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.

      1. Achten Sie darauf, dass Sie den Trace in der richtigen Winscope-Version öffnen (Master, S oder R).
      2. 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.