Uruchamianie Winscope

Ś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:

  1. Pobierz kod źródłowy Androida.
  2. Przejdź do folderu Winscope:

    cd development/tools/winscope
    
  3. Zainstaluj zależności za pomocą:

    npm install
    

    Aby wyświetlić listę dostępnych poleceń, uruchom: npm run

  4. Utwórz wszystkie produkcyjne i testowe środowiska docelowe za pomocą:

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

  1. Aby uruchomić przetwarzacz adnotacji, utwórz plik :framework-minus-apex-intdefs:

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

      1. Upewnij się, że otwierasz ślad w prawidłowej wersji Winscope (master, S lub R).
      2. 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.jsonpackage-lock.json. Usuń node_modules. Uruchom ponownie npm install.
  • 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.