Трассировка 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 | Перекомпилирует определения прототипа. |
Запуск тестов
Winscope содержит модульные и сквозные тесты. Чтобы запустить их, используйте npm run <command>
:
Команда | Описание |
---|---|
test:unit:ci | Запускает модульные тесты в менее подробном формате для CI. или предварительно отправить хук. |
test:unit:dev | Запускает модульные тесты в более подробном формате для местное развитие. Этот режим отслеживает изменения и автоматически повторно запускает правильные тесты. |
test:e2e | Запускает сквозные тесты, например тесты для протокол перекрестного инструмента. |
test:presubmit:quiet | Создает все предварительные модульные тесты, линтеры и графики. анализ в менее подробном формате для CI или предварительной отправки крюк. |
test:presubmit | Создает все предварительные модульные тесты, линтеры и графики. анализ в более подробном формате для локальных разработка. |
test:all | Запускает все тесты (модульные и сквозные), линтеры и графический анализ в более подробном формате для локальных разработка. |
Обновить сопоставление @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).
Если вы создаете новое поле в прототипе, перекомпилируйте прототипы в Winscope, используя
npm run build:protos
.
Некоторые установленные версии зависимостей неверны (сбой сборки)
- Отмените изменения в
package.json
иpackage-lock.json
. Удалитеnode_modules
. Запуститеnpm install
еще раз.
- Отмените изменения в
Я добавил новое поле в один из файлов прототипа. Как мне это отобразить?
- Winscope использует определения прототипа с момента его компиляции, поэтому новые поля по умолчанию не отображаются. Чтобы отобразить новые поля, перестройте прототипы с помощью
npm run build:protos
.
- Winscope использует определения прототипа с момента его компиляции, поэтому новые поля по умолчанию не отображаются. Чтобы отобразить новые поля, перестройте прототипы с помощью