Winscope-Tracing ist Teil des Android-Frameworks. Auf dieser Seite wird beschrieben, wie Sie den Winscope-Trace-Viewer lokal herunterladen, erstellen und ausführen.
Winscope lokal erstellen
So richten Sie Ihren PC für die Ausführung des Winscope-Tracers ein:
- Android-Quellcode herunterladen
Rufen Sie den Winscope-Ordner auf:
cd development/tools/winscope
Installieren Sie die Abhängigkeiten mit folgendem Befehl:
npm install
Führen Sie den folgenden Befehl aus, um eine Liste der verfügbaren Befehle aufzurufen:
npm run
Erstellen Sie alle Produktions- und Testziele mit folgendem Befehl:
npm run build:prod
Führen Sie Winscope mit folgendem Befehl 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 |
Checkt die neueste Version von Perfetto trace_processor aus und erstellt sie neu. |
build:protos |
Kompiliert die Proto-Definitionen neu. |
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 Einheitentests in einem weniger ausführlichen Format für CI oder den Vorabtest-Hook aus. |
test:unit:dev |
Führt die Einheitentests in einem ausführlicheren Format für die lokale Entwicklung aus. In diesem Modus wird auf Änderungen gewartet und die richtigen Tests werden automatisch noch einmal ausgeführt. |
test:e2e |
Führt die End-to-End-Tests aus, z. B. für das -Protokoll für die toolübergreifende Zusammenarbeit. |
test:presubmit:quiet |
Erstellt alle Vorabtest-Unit-Tests, Linter und die Graph -Analyse in einem weniger ausführlichen Format für CI- oder Vorabtest- -Hooks. |
test:presubmit |
Erstellt alle Presubmit-Einheitentests, Linter und die Graph -Analyse in einem ausführlicheren Format für die lokale -Entwicklung. |
test:all |
Führt alle Tests (Unit- und End-to-End-Tests), Linter und die -Grafikanalyse in einem ausführlicheren Format für die lokale -Entwicklung aus. |
End-to-End-Tests
Bevor Sie End-to-End-Tests ausführen, müssen Sie das Remote-Tool starten und die richtige Version des Chrome-Treibers installieren. Im folgenden Code-Snippet wird der Chrome-Treiber mit dem Befehl run test:e2e
automatisch installiert.
$ npm run start
$ npm run start:remote_tool_mock
$ npm run test:e2e
In der folgenden Tabelle sind die erforderlichen Befehle und ihre Beschreibungen aufgeführt. So führen Sie sie mit npm run command
aus:
Befehl | Beschreibung |
---|---|
start:remote_tool_mock |
Startet den Mock für das Remote-Tool zum Testen des Tool-übergreifenden Protokolls. |
install:chromedriver |
Installiert den Chrome-Treiber, der zum Ausführen von End-to-End-Tests erforderlich ist. |
@IntDef-Zuordnung aktualisieren
@IntDef
ist eine Annotation, die in 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:
Erstellen Sie
:framework-minus-apex-intdefs
, damit der Annotations-Vorprozessor ausgeführt werden kann:mp :framework-minus-apex-intdefs
Kopieren Sie die generierte Datei
intDefMapping.json
in das Prebuilts-Repository:$ 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 in Winscope mit
repo upload
hoch.
Weitere Befehle
Neben Build- und Testfunktionen enthalten Winscope-Skripts auch andere 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 bei der Codeformatierung. |
format:fix |
Überprüft und behebt Probleme mit der Codeformatierung mithilfe von prettier automatisch. |
eslint:check |
Prüft mit eslint auf Probleme bei der Codeformatierung. |
eslint:fix |
Überprüft und behebt Probleme mit der Codeformatierung mithilfe von eslint automatisch. |
tslint:check |
Prüft mit tslint auf Probleme bei der Codeformatierung. |
tslint:fix |
Überprüft und behebt Probleme mit der Codeformatierung mithilfe von tslint automatisch. |
deps_graph:check_cycles |
Analysiert den Code auf zyklische Abhängigkeiten. |
Fehlerbehebung
Folgende Tipps können bei der Fehlerbehebung hilfreich sein:
Fehler
ProtocolError: missing required '<FIELD>'
oderTypeError: Cannot read property '<PROP>' of null
Dieser Fehler 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 (Master, S oder R) öffnen.
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 schlägt fehl)
- 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 wird sie angezeigt?
- Winscope verwendet die Proto-Definitionen aus der Kompilierungszeit. Neue Felder werden daher nicht standardmäßig angezeigt. Wenn Sie neue Felder anzeigen möchten, erstellen Sie die Protos mit
npm run build:protos
neu.
- Winscope verwendet die Proto-Definitionen aus der Kompilierungszeit. Neue Felder werden daher nicht standardmäßig angezeigt. Wenn Sie neue Felder anzeigen möchten, erstellen Sie die Protos mit