Śledzenie Winscope jest częścią platformy Android. Na tej stronie znajdziesz czynności wymagane do pobrania, skompilowania i uruchomienia lokalnie narzędzia do przeglądania śladów Winscope.
Tworzenie Winscope lokalnie
Aby skonfigurować komputer do uruchamiania narzędzia do śledzenia Winscope:
- Pobierz kod źródłowy Androida.
Przejdź do folderu Winscope:
cd development/tools/winscope
Zainstaluj zależności za pomocą:
npm install
Aby wyświetlić listę dostępnych poleceń, uruchom:
npm run
Utwórz wszystkie produkcyjne i testowe środowiska docelowe za pomocą:
npm run build:prod
Uruchom Winscope za pomocą:
npm run start
Budowanie oddzielnych części
Poszczególne części Winscope możesz budować osobno, używając tych poleceń:
Polecenie | Opis |
---|---|
build:trace_processor |
Sprawdza i odtwarza najnowszą wersję Perfetto trace_processor . |
build:protos |
Kompiluje ponownie definicje proto. |
Przeprowadzanie testów
Winscope zawiera testy jednostkowe i kompleksowe. Aby je uruchomić, użyj npm run
<command>
:
Polecenie | Opis |
---|---|
test:unit:ci |
Uruchamia testy jednostkowe w mniej obszernym formacie na potrzeby CI lub przed przesłaniem kodu. |
test:unit:dev |
Przeprowadza testy jednostkowe w bardziej rozbudowanym formacie na potrzeby lokalnego programowania. Ten tryb sprawdza zmiany i automatycznie ponownie przeprowadza odpowiednie testy. |
test:e2e |
Przeprowadzanie kompleksowych testów, takich jak testy protokołu cross-tool. |
test:presubmit:quiet |
Kompiluje wszystkie testy jednostkowe przed przesłaniem, narzędzia do sprawdzania kodu i analizę grafu w mniej rozbudowanym formacie na potrzeby CI lub funkcji przed przesłaniem . |
test:presubmit |
Kompiluje wszystkie testy jednostkowe, narzędzia do sprawdzania kodu i analizę grafu w bardziej rozbudowanym formacie do lokalnego programowania. |
test:all |
Wykonuje wszystkie testy (jednostkowe i kompleksowe), narzędzia do sprawdzania kodu oraz analizę grafu w bardziej rozbudowanym formacie na potrzeby lokalnego programowania. |
Aktualizacja mapowania @IntDef
@IntDef
to adnotacja używana w Androidzie do ograniczenia możliwych wartości liczby całkowitej. Winscope używa mapowania tych adnotacji, aby wyświetlać nazwę wartości zamiast liczby całkowitej.
Aby zaktualizować mapowanie @IntDef
:
Aby uruchomić przetwarzacz adnotacji, utwórz plik
:framework-minus-apex-intdefs
:mp :framework-minus-apex-intdefs
Skopiuj wygenerowany plik
intDefMapping.json
do repozytorium z kompletnymi pakietami:$ 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
Prześlij zmiany w Winscope za pomocą
repo upload
.
Inne polecenia
Oprócz kompilacji i testów skrypty Winscope zawierają też inne funkcje, jak pokazano w tabeli. Aby je uruchomić, użyj npm run command
:
Polecenie | Opis |
---|---|
format:check |
Sprawdzanie problemów z formatowaniem kodu za pomocą prettier . |
format:fix |
Sprawdza i automatycznie poprawia problemy z formatowaniem kodu za pomocą prettier . |
eslint:check |
Sprawdzanie problemów z formatowaniem kodu za pomocą eslint . |
eslint:fix |
Sprawdza i automatycznie poprawia problemy z formatowaniem kodu za pomocą eslint . |
tslint:check |
Sprawdzanie problemów z formatowaniem kodu za pomocą tslint . |
tslint:fix |
Sprawdza i automatycznie poprawia problemy z formatowaniem kodu za pomocą tslint . |
deps_graph:check_cycles |
Analizuje kod pod kątem zależności cyklicznych. |
Rozwiązywanie problemów
Oto wskazówki dotyczące rozwiązywania problemów:
Błąd
ProtocolError: missing required '<FIELD>'
lubTypeError: Cannot read property '<PROP>' of null
Występuje to, gdy plik śladu został utworzony przy użyciu nowej definicji proto, zawierającej nowe wymagane pola.
- Upewnij się, że otwierasz ślad w prawidłowej wersji Winscope (master, S lub R).
Jeśli utworzysz nowe pole w prototypie, ponownie skompiluj prototypy w Winscope za pomocą
npm run build:protos
.
Niektóre zainstalowane wersje zależności są nieprawidłowe (kompilacja nie powiedzie się)
- Cofnij zmiany w przypadku
package.json
ipackage-lock.json
. Usuńnode_modules
. Uruchom ponownienpm install
.
- Cofnij zmiany w przypadku
Dodałem nowe pole do jednego z plików proto. Jak mogę go wyświetlić?
- Winscope używa definicji proto z czasu kompilacji, więc nowe pola nie będą domyślnie widoczne. Aby wyświetlić nowe pola, ponownie zbuduj prototyp za pomocą funkcji
npm run build:protos
.
- Winscope używa definicji proto z czasu kompilacji, więc nowe pola nie będą domyślnie widoczne. Aby wyświetlić nowe pola, ponownie zbuduj prototyp za pomocą funkcji