Google is committed to advancing racial equity for Black communities. See how.
Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

Śledzenie przejść okien

WinScope zapewnia infrastrukturę i narzędzia do rejestrowania i analizowania stanów WindowManager i SurfaceFlinger podczas i po przejściu okien. WinScope rejestruje wszystkie istotne stany usług systemowych w pliku śledzenia, którego można używać do odtwarzania i przechodzenia przez przejścia.

Przechwytywanie śladów

Przechwytuj ślady za pomocą Szybkich ustawień lub adb na urządzeniach z wersjami userdebug lub eng.

Szybkie ustawienia

Aby przechwycić ślady z Szybkich ustawień :

  1. Włącz opcje programisty .
  2. Przejdź do Opcje programisty > Kafelki programisty Szybkie ustawienia .
  3. Włącz śledzenie WinScope .
  4. Otwórz Szybkie ustawienia .
  5. Stuknij Winscope Trace, aby włączyć śledzenie.
  6. Uruchom przejścia okien na urządzeniu.
  7. Po zakończeniu otwórz Szybkie ustawienia i dotknij Winscope Trace, aby wyłączyć śledzenie.

Ślady są zapisywane w /data/misc/wmtrace/wm_trace.pb i /data/misc/wmtrace/layers_trace.pb . Ślady są również zawarte w raportach błędów.

adb

Podczas przechwytywania śladów przez adb , przechwytuj oddzielnie ślady WindowManager i SurfaceFlinger.

Ślady WindowManager

Aby przechwycić ślady WindowManager:

  1. Włącz śledzenie:
    adb shell cmd window tracing start
  2. Wyłącz śledzenie:
    adb shell cmd window tracing stop
  3. Weź plik śledzenia:
    adb pull /data/misc/wmtrace/wm_trace.pb wm_trace.pb

Opcjonalnie można zmienić domyślną konfigurację dziennika różnych ustawień śladów programu WindowManager:

  • Ustaw częstotliwość rejestrowania (dla transakcji lub ramki):
    adb shell cmd window tracing [frame | transaction]
  • Skonfiguruj poziom szczegółowości wpisów dziennika:
    adb shell cmd window tracing level [all | trim | critical]
  • Ustaw maksymalny rozmiar buforu (w KB):
    adb shell cmd window tracing size size-value
  • Zrzuć stan bufora, poziom dziennika, pozostałą pojemność i liczbę elementów:
    adb shell cmd window tracing status

Ślady SurfaceFlinger

Aby przechwycić ślady SurfaceFlinger:

  1. Włącz śledzenie:
    adb shell su root service call SurfaceFlinger 1025 i32 1
  2. Wyłącz śledzenie:
    adb shell su root service call SurfaceFlinger 1025 i32 0
  3. Weź plik śledzenia:
    adb pull /data/misc/wmtrace/layers_trace.pb layers_trace.pb

Opcjonalnie można zmienić domyślną konfigurację dziennika różnych ustawień śladów SurfaceFlinger:

  • Ustaw maksymalny rozmiar buforu (w KB):
    adb shell su root service call SurfaceFlinger 1029 i32 size-value
  • Skonfiguruj poziom szczegółowości dla wpisów dziennika:
    adb shell su root service call SurfaceFlinger 1033 i32 flags

Generowanie zrzutów stanu

WinScope odczytuje migawkę stanów WindowManager i SurfaceFlinger z raportów o błędach. Raporty o błędach przechowują stany jako oddzielne pliki proto folderze proto . Aby wygenerować zrzuty stanu za pomocą adb , uruchom następujące polecenia.

WindowManager

adb exec-out dumpsys window --proto > window_dump.pb

SurfaceFlinger

adb exec-out dumpsys SurfaceFlinger --proto > sf_dump.pb

Analiza śladów

Aby przeanalizować plik śledzenia, użyj aplikacji internetowej WinScope. Możesz zbudować aplikację ze źródła lub otworzyć ją z gotowego katalogu.

  1. Pobierz gotowe artefakty z repozytorium źródłowego Androida:
    curl 'https://android.googlesource.com/platform/prebuilts/misc/+/master/common/winscope/winscope.html?format=TEXT' | base64 -d > winscope.html
  2. Otwórz pobrane artefakty w przeglądarce internetowej.
  3. Po otwarciu WinScope wybierz OPEN FILE, aby załadować plik śledzenia.

Korzystanie z WinScope

Po otwarciu pliku śledzenia w WinScope, możesz przeanalizować ślad na kilka sposobów.

Zrzut ekranu WinScope
Rysunek 1. Analiza śladu w WinScope
  • Oś czasu - przedstawia sekwencję zdarzeń w śladzie. Użyj klawiszy strzałek lub kliknij każdą pozycję, aby poruszać się po osi czasu.
  • Ekran - zapewnia wizualną reprezentację każdego widocznego okna na ekranie. Kliknij okno, aby wybrać okno źródłowe w hierarchii.
  • Hierarchia - reprezentuje każde okno znane w systemie. Niektóre okna nie zawierają buforów, ale istnieją po to, aby ustawić zasady dla elementów podrzędnych okna. Widoczne okna są oznaczone ikoną V
  • Właściwości - przedstawia informacje o stanie dla wybranej pozycji w hierarchii.