Ś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:
- Pobierz źródło Androida
Przejdź do folderu Winscope:
cd development/tools/winscope
Zainstaluj zależności za pomocą tego polecenia:
npm install
Aby zobaczyć listę dostępnych poleceń, uruchom:
npm run
Utwórz wszystkie produkcyjne i testowe środowiska docelowe, korzystając z tych opcji:
npm run build:prod
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ę Perfetto trace_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
:
Skompiluj
:framework-minus-apex-intdefs
, aby uruchomić preprocesor adnotacji:mp :framework-minus-apex-intdefs
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
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>'
lubTypeError: Cannot read property '<PROP>' of null
Dzieje się tak, gdy plik śledzenia został utworzony z nową definicją protokołu zawierającą nowe wymagane pola.
- Upewnij się, że otwierasz ślad w odpowiedniej wersji Winscope (master, S lub R).
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.json
ipackage-lock.json
. Usuńnode_modules
. Uruchom ponownienpm install
.
- Cofnij zmiany w przypadku
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
.
- 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