Uruchamianie Winscope

Śledzenie Winscope jest częścią platformy Androida. Na tej stronie znajdziesz instrukcje pobierania, tworzenia i lokalnego uruchamiania przeglądarki śladów Winscope.

Lokalne kompilowanie Winscope

Aby skonfigurować komputer do uruchamiania narzędzia Winscope Tracer, wykonaj te czynności:

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

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

    npm install
    

    Aby zobaczyć listę dostępnych poleceń, uruchom: npm run

  4. Utwórz wszystkie produkcyjne i testowe środowiska docelowe, korzystając z tych opcji:

    npm run build:prod
    
  5. Uruchom Winscope za pomocą:

    npm run start
    

Tworzenie osobnych części

Poszczególne części Winscope możesz tworzyć oddzielnie za pomocą tych poleceń:

Polecenie Opis
build:trace_processor Pobiera i ponownie kompiluje najnowszą wersję
Perfettotrace_processor.
build:protos Ponownie kompiluje definicje proto.

Przeprowadzanie testów

Winscope zawiera testy jednostkowe i testy kompleksowe. Aby je uruchomić, użyj npm run <command>:

Polecenie Opis
test:unit:ci Uruchamia testy jednostkowe w mniej szczegółowym formacie na potrzeby CI
lub wstępnego sprawdzania.
test:unit:dev Uruchamia testy jednostkowe w bardziej szczegółowym formacie na potrzeby
lokalnego programowania. W tym trybie śledzone są zmiany i 
automatycznie ponownie uruchamiane są odpowiednie testy.
test:e2e Uruchamia testy kompleksowe, takie jak testy protokołu
między narzędziami.
test:presubmit:quiet Tworzy wszystkie testy jednostkowe przed przesłaniem, narzędzia do sprawdzania kodu i analizy grafów
w mniej szczegółowym formacie na potrzeby CI lub haka przed przesłaniem.
test:presubmit Kompiluje wszystkie testy jednostkowe przed przesłaniem, narzędzia do sprawdzania kodu i analizę grafu
w bardziej szczegółowym formacie na potrzeby lokalnego
programowania.
test:all Uruchamia wszystkie testy (jednostkowe i kompleksowe), narzędzia do sprawdzania kodu i 
analizę grafu w bardziej szczegółowym formacie na potrzeby lokalnego
programowania.

Testy kompleksowe

Przed uruchomieniem testów kompleksowych musisz uruchomić narzędzie zdalne i zainstalować odpowiednią wersję sterownika Chrome. W tym fragmencie kodu polecenie run test:e2e automatycznie instaluje sterownik Chrome.

$ npm run start
$ npm run start:remote_tool_mock
$ npm run test:e2e

W tabeli poniżej znajdziesz listę niezbędnych poleceń i ich opisy. Aby je uruchomić, użyj npm run command:

Polecenie Opis
start:remote_tool_mock Uruchamia pozorowane narzędzie zdalne do testowania protokołu między narzędziami.
install:chromedriver Instaluje sterownik Chrome niezbędny do przeprowadzania testów kompleksowych.

Aktualizowanie mapowania @IntDef

@IntDef to adnotacja używana w Androidzie do ograniczania 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. Skompiluj :framework-minus-apex-intdefs, aby uruchomić preprocesor adnotacji:

    mp :framework-minus-apex-intdefs
    
  2. Skopiuj wygenerowany plik intDefMapping.json do repozytorium prebuilts:

    $ 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ą ikony repo upload.

Inne polecenia

Oprócz funkcji kompilacji i testów skrypty Winscope zawierają inne możliwości, jak pokazano w tabeli. Aby je uruchomić, użyj npm run command:

Polecenie Opis
format:check Sprawdza problemy z formatowaniem kodu za pomocą narzędzia prettier.
format:fix Sprawdza i automatycznie rozwiązuje problemy z formatowaniem kodu za pomocą prettier.
eslint:check Sprawdza problemy z formatowaniem kodu za pomocą narzędzia eslint.
eslint:fix Sprawdza i automatycznie rozwiązuje problemy z formatowaniem kodu za pomocą eslint.
tslint:check Sprawdza problemy z formatowaniem kodu za pomocą narzędzia tslint.
tslint:fix Sprawdza i automatycznie rozwiązuje problemy z formatowaniem kodu za pomocą tslint.
deps_graph:check_cycles Analizuje kod pod kątem zależności cyklicznych.

Rozwiązywanie problemów

Aby rozwiązać problemy, skorzystaj z tych wskazówek:

  • Błąd ProtocolError: missing required '<FIELD>' lub TypeError: Cannot read property '<PROP>' of null

    • Dzieje się tak, gdy plik śledzenia został utworzony z nową definicją protokołu zawierającą nowe wymagane pola.

      1. Upewnij się, że otwierasz ślad w odpowiedniej wersji Winscope (master, S lub R).
      2. Jeśli utworzysz nowe pole w pliku proto, ponownie skompiluj pliki proto w Winscope za pomocą polecenia npm run build:protos.

  • Niektóre zainstalowane wersje zależności są nieprawidłowe (kompilacja się nie powiodła)

    • Cofnij zmiany w przypadku package.jsonpackage-lock.json. Usuń node_modules. Uruchom ponownie npm install.
  • W jednym z plików proto dodano nowe pole. Jak ją wyświetlić?

    • Winscope używa definicji protokołów z czasu kompilacji, więc nowe pola nie będą domyślnie widoczne. Aby wyświetlić nowe pola, ponownie skompiluj pliki proto za pomocą polecenia npm run build:protos.