Трассировка 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 использует определения прототипов, которые были на момент компиляции, поэтому новые поля по умолчанию не отображаются. Чтобы отобразить новые поля, пересоберите прототипы с помощью