Google is committed to advancing racial equity for Black communities. See how.
Эта страница была переведа с помощью Cloud Translation API.
Switch to English

Отслеживание оконных переходов

WinScope предоставляет инфраструктуру и инструменты для записи и анализа состояний WindowManager и SurfaceFlinger во время и после смены окон. WinScope записывает все соответствующие состояния системной службы в файл трассировки, который можно использовать для воспроизведения и выполнения переходов.

Захват следов

Захватывать трассировки с помощью быстрых настроек или adb на устройствах под управлением userdebug или eng builds.

Быстрые настройки

Для захвата следов из быстрых настроек :

  1. Включить параметры разработчика .
  2. Перейти к опциям разработчика> Быстрые настройки разработчика плитки.
  3. Включить WinScope Trace .
  4. Откройте Быстрые настройки .
  5. Нажмите Winscope Trace, чтобы включить трассировку.
  6. Запустите переходы окон на устройстве.
  7. После завершения откройте « Быстрые настройки» и коснитесь Winscope Trace, чтобы отключить трассировку.

/data/misc/wmtrace/wm_trace.pb записываются в /data/misc/wmtrace/wm_trace.pb и /data/misc/wmtrace/layers_trace.pb . Следы также включены в отчеты об ошибках.

adb

При захвате трасс через adb захватывайте трассировки WindowManager и SurfaceFlinger по отдельности.

Следы WindowManager

Чтобы захватить трассировки WindowManager:

  1. Включить трассировку:
    adb shell cmd window tracing start
  2. Отключить трассировку:
    adb shell cmd window tracing stop
  3. Возьмите файл трассировки:
    adb pull /data/misc/wmtrace/wm_trace.pb wm_trace.pb

При желании вы можете изменить конфигурацию журнала по умолчанию для различных параметров трассировок WindowManager:

  • Установите периодичность регистрации (для транзакции или фрейма):
    adb shell cmd window tracing [ frame  |  transaction ]
  • Настройте подробный уровень для записей журнала:
    adb shell cmd window tracing level [ all  |  trim  |  critical ]
  • Установите максимальный размер буфера (в КБ):
    adb shell cmd window tracing size size-value 
  • Дамп состояния буфера, уровень журнала, оставшаяся емкость и количество элементов:
    adb shell cmd window tracing status

Следы SurfaceFlinger

Для захвата следов SurfaceFlinger:

  1. Включить трассировку:
    adb shell su root service call SurfaceFlinger 1025 i32 1
  2. Отключить трассировку:
    adb shell su root service call SurfaceFlinger 1025 i32 0
  3. Возьмите файл трассировки:
    adb pull /data/misc/wmtrace/layers_trace.pb layers_trace.pb

При желании вы можете изменить конфигурацию журнала по умолчанию для различных параметров трассировок SurfaceFlinger:

  • Установите максимальный размер буфера (в КБ):
    adb shell su root service call SurfaceFlinger 1029 i32 size-value 
  • Настройте подробный уровень для записей журнала:
    adb shell su root service call SurfaceFlinger 1033 i32 flags 

Создание дампов состояния

WinScope читает снимки состояний WindowManager и SurfaceFlinger из отчетов об ошибках. Отчеты об ошибках хранят состояния в виде отдельных файлов прото-файлов внутри папки proto . Чтобы сгенерировать дампы состояния с помощью adb , выполните следующие команды.

WindowManager

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

SurfaceFlinger

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

Анализировать следы

Для анализа файла трассировки используйте веб-приложение WinScope. Собрать приложение можно из исходного кода или открыть его из готового каталога.

  1. Загрузите готовые артефакты из исходного хранилища Android:
    curl 'https://android.googlesource.com/platform/prebuilts/misc/+/master/common/winscope/winscope.html?format=TEXT' | base64 -d > winscope.html
  2. Откройте загруженные артефакты в веб-браузере.
  3. После открытия WinScope выберите OPEN FILE, чтобы загрузить файл трассировки.

Использование WinScope

После открытия файла трассировки в WinScope вы можете проанализировать трассировку несколькими способами.

Скриншот WinScope
Рисунок 1. Анализ трассировки в WinScope
  • Временная шкала - показывает последовательность событий в трассировке. Используйте клавиши со стрелками или щелкните каждую запись, чтобы перемещаться по временной шкале.
  • Экран - обеспечивает визуальное представление каждого видимого окна на экране. Нажмите на окно, чтобы выбрать исходное окно в иерархии.
  • Иерархия - представляет каждое окно, известное системе. Некоторые окна не содержат буферов, но существуют для установки политик дочерних элементов окна. Видимые окна отмечены значком V
  • Свойства - показывает информацию о состоянии для выбранной записи в иерархии.