Трассировка Winscope является частью фреймворка Android. На этой странице описаны шаги, необходимые для загрузки, сборки и локального запуска средства просмотра трассировки Winscope.
Локальная сборка Winscope
Чтобы настроить ПК для запуска трассировщика Winscope, выполните следующие действия:
- Загрузите исходный код Android .
- Перейдите в папку Winscope: - cd development/tools/winscope
- Установите зависимости с помощью: - npm install- Чтобы увидеть список доступных команд, выполните: - npm run
- Создайте все целевые продукты и тесты с помощью: - npm run build:prod
- Запустите Winscope с помощью: - npm run start
Сборка отдельных частей
Вы можете собрать отдельные части Winscope по отдельности, используя следующие команды:
| Команда | Описание | 
|---|---|
| build:trace_processor | Проверяет и перестраивает последнюю версию trace_processorот Perfetto. | 
| build:protos | Перекомпилирует определения proto. | 
Проведение тестов
 Winscope содержит модульные и сквозные тесты. Для их запуска используйте npm run <command> :
| Команда | Описание | 
|---|---|
| test:unit:ci | Запускает модульные тесты в менее подробном формате для CI или presubmit-крючок. | 
| test:unit:dev | Запускает модульные тесты в более подробном формате для Локальное развитие. Этот режим отслеживает изменения и автоматически повторно запускает правильные тесты. | 
| test:e2e | Выполняет сквозные тесты, такие как тесты для кросс-инструментальный протокол. | 
| test:presubmit:quiet | Создает все предварительные модульные тесты, линтеры и графики анализ в менее подробном формате для CI или предварительной отправки крюк. | 
| test:presubmit | Создает все предварительные модульные тесты, линтеры и графики анализ в более подробном формате для местных разработка. | 
| test:all | Выполняет все тесты (модульные и сквозные), линтеры и анализ графа в более подробном формате для локальных разработка. | 
Сквозные тесты
 Перед запуском сквозного тестирования необходимо запустить инструмент удалённой проверки и установить правильную версию драйвера Chrome. В следующем фрагменте кода команда run test:e2e автоматически устанавливает драйвер Chrome.
$ npm run start
$ npm run start:remote_tool_mock
$ npm run test:e2e
 В следующей таблице перечислены необходимые команды и их описания. Для их запуска используйте npm run command :
| Команда | Описание | 
|---|---|
| start:remote_tool_mock | Запускает удаленный имитатор инструмента для тестирования протокола кросс-инструмента. | 
| install:chromedriver | Устанавливает драйвер Chrome, необходимый для проведения сквозных тестов. | 
Обновить сопоставление @IntDef
 @IntDef — это аннотация, используемая в Android для ограничения возможных значений целого числа. Winscope использует сопоставление этих аннотаций для отображения имени значения вместо целого числа.
 Чтобы обновить сопоставление @IntDef , выполните следующие действия:
- Создайте - :framework-minus-apex-intdefsдля запуска препроцессора аннотаций:- mp :framework-minus-apex-intdefs
- Скопируйте сгенерированный файл - intDefMapping.jsonв репозиторий готовых файлов:- $ 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
- Загрузите изменения в Winscope с помощью - repo upload.
Другие команды
 Помимо сборки и тестирования, скрипты Winscope содержат и другие возможности, как показано в таблице. Для их запуска используйте npm run command :
| Команда | Описание | 
|---|---|
| format:check | Проверяет наличие проблем форматирования кода с помощью prettier. | 
| format:fix | Проверяет и автоматически исправляет проблемы форматирования кода с помощью prettier. | 
| eslint:check | Проверяет наличие проблем форматирования кода с помощью eslint. | 
| eslint:fix | Проверяет и автоматически исправляет проблемы форматирования кода с помощью eslint. | 
| tslint:check | Проверяет наличие проблем форматирования кода с помощью tslint. | 
| tslint:fix | Проверяет и автоматически исправляет проблемы форматирования кода с помощью tslint. | 
| deps_graph:check_cycles | Анализирует код на наличие циклических зависимостей. | 
Устранение неполадок
Воспользуйтесь следующими советами по устранению неполадок:
- Ошибка - ProtocolError: missing required '<FIELD>'или- TypeError: Cannot read property '<PROP>' of null- Это происходит, когда файл трассировки был создан с новым определением протокола, содержащим новые обязательные поля. - Убедитесь, что вы открываете трассировку на правильной версии Winscope (master, S или R).
- Если вы создаете новое поле в proto, перекомпилируйте protos в Winscope с помощью - npm run build:protos.
 
 
- Некоторые установленные версии зависимостей неверны (сборка завершается неудачей) -  Отмените изменения в package.jsonиpackage-lock.json. Удалитеnode_modules. Снова выполнитеnpm install.
 
-  Отмените изменения в 
- Я добавил новое поле в один из файлов proto. Как его отобразить? -  Winscope использует определения прототипов, которые были на момент компиляции, поэтому новые поля по умолчанию не отображаются. Чтобы отобразить новые поля, пересоберите прототипы с помощью npm run build:protos.
 
-  Winscope использует определения прототипов, которые были на момент компиляции, поэтому новые поля по умолчанию не отображаются. Чтобы отобразить новые поля, пересоберите прототипы с помощью 
