Начиная с 27 марта 2025 г. мы рекомендуем использовать android-latest-release вместо aosp-main для создания и участия в AOSP. Дополнительные сведения см. в разделе Изменения в AOSP .
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Трассировка Winscope является частью фреймворка Android. На этой странице описываются шаги, необходимые для загрузки, сборки и локального запуска средства просмотра трассировки Winscope.
Локальная сборка Winscope
Чтобы настроить ПК для запуска трассировщика Winscope, выполните следующие действия:
Чтобы увидеть список доступных команд, выполните: npm run
Создайте все целевые объекты prod и test, используя:
npm run build:prod
Запустите Winscope с помощью:
npm run start
Сборка отдельных частей
Вы можете собрать отдельные части Winscope по отдельности, используя следующие команды:
Команда
Описание
build:trace_processor
Проверяет и перестраивает последнюю версию trace_processor от Perfetto.
build:protos
Перекомпилирует определения proto.
Проведение тестов
Winscope содержит unit и end-to-end тесты. Для их запуска используйте 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 в репозиторий готовых файлов:
Загрузите изменения в 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
Это происходит, когда файл трассировки был создан с новым определением proto, содержащим новые обязательные поля.
Убедитесь, что вы открываете трассировку на правильной версии Winscope (master, S или R).
Если вы создаете новое поле в proto, перекомпилируйте protos в Winscope с помощью npm run build:protos .
Некоторые установленные версии зависимостей неверны (сборка завершается неудачей)
Отменить изменения в package.json и package-lock.json . Удалить node_modules . Запустить npm install еще раз.
Я добавил новое поле в один из proto-файлов. Как его отобразить?
Winscope использует определения proto с момента компиляции, поэтому новые поля не будут отображаться по умолчанию. Чтобы отобразить новые поля, перестройте protos с помощью npm run build:protos .
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-08-24 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-08-24 UTC."],[],[],null,["# Run Winscope\n\nWinscope tracing is part of the Android framework. This page outlines the\nsteps required to download, build, and run the Winscope trace viewer locally.\n\nBuild Winscope locally\n----------------------\n\nFollow these steps to set up your PC to run the Winscope tracer:\n\n1. [Download the Android source](/docs/setup/build/building).\n2. Navigate to the Winscope folder:\n\n cd development/tools/winscope\n\n3. Install dependencies using:\n\n npm install\n\n To see a list of available commands, run: `npm run`\n4. Build all prod and test targets using:\n\n npm run build:prod\n\n5. Run Winscope using:\n\n npm run start\n\n| **Note:** You can also download and build Winscope to host on a standard web server to get a shareable link to the tool.\n\nBuild separate parts\n--------------------\n\nYou can build individual parts of Winscope separately using the following\ncommands:\n\n| Command | Description |\n|-------------------------|-----------------------------------------------------------------------------|\n| `build:trace_processor` | Checks out and rebuilds the latest version of Perfetto's `trace_processor`. |\n| `build:protos` | Recompiles the proto definitions. |\n\nRun tests\n---------\n\n| **Tip:** Winscope doesn't build on Soong and can't be built by Tradefed, so it's recommended to have a local Git hook to the tests in your local environment.\n\nWinscope contains unit and end-to-end tests. To run them use `npm run\n\u003ccommand\u003e`:\n\n| Command | Description |\n|------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------|\n| `test:unit:ci` | Runs the unit tests in a less verbose format for CI or presubmit hook. |\n| `test:unit:dev` | Runs the unit tests in a more verbose format for local development. This mode watches for changes and automatically reruns the correct tests. |\n| `test:e2e` | Runs the end-to-end tests, such as those for the cross-tool protocol. |\n| `test:presubmit:quiet` | Builds all presubmit unit tests, linters, and graph analysis in a less verbose format for CI or presubmit hook. |\n| `test:presubmit` | Builds all presubmit unit tests, linters, and graph analysis in a more verbose format for local development. |\n| `test:all` | Runs all tests (unit and end-to-end), linters, and graph analysis in a more verbose format for local development. |\n\n### Update @IntDef mapping\n\n`@IntDef` is an annotation used in Android to restrict the possible values of an\ninteger. Winscope uses a mapping of these annotations to display the name of the\nvalue instead of the integer.\n\nTo update the `@IntDef` mapping, do the following:\n\n1. Build `:framework-minus-apex-intdefs` for the annotation preprocessor to run:\n\n mp :framework-minus-apex-intdefs\n\n2. Copy the generated `intDefMapping.json` file to the prebuilts repository:\n\n $ 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) \u003e ./development/tools/winscope/src/common/intDefMapping.json\n\n3. Upload the changes in Winscope using `repo upload`.\n\nOther commands\n--------------\n\nIn addition to build and tests, Winscope scripts contain other capabilities, as\nshown in the table. To run them use `npm run `\u003cvar translate=\"no\"\u003ecommand\u003c/var\u003e:\n\n| Command | Description |\n|---------------------------|----------------------------------------------------------------|\n| `format:check` | Checks for code formatting issues using `prettier`. |\n| `format:fix` | Checks and auto fixes code formatting issues using `prettier`. |\n| `eslint:check` | Checks for code formatting issues using `eslint`. |\n| `eslint:fix` | Checks and auto fixes code formatting issues using `eslint`. |\n| `tslint:check` | Checks for code formatting issues using `tslint`. |\n| `tslint:fix` | Checks and auto fixes code formatting issues using `tslint`. |\n| `deps_graph:check_cycles` | Analyzes the code for cyclical dependencies. |\n\nTroubleshoot\n------------\n\nUse the following tips for troubleshooting:\n\n- **Error `ProtocolError: missing required '\u003cFIELD\u003e'` or `TypeError: Cannot\n read property '\u003cPROP\u003e' of null`**\n\n - This occurs when the trace file was created with a new proto definition,\n containing new *required* fields.\n\n 1. Make sure you're opening the trace on the correct Winscope version (master, S, or R).\n 2. If you create the new field on the proto, recompile the protos in\n Winscope using `npm run build:protos`.\n\n | **Note:** You shouldn't need a new required field, because the protos should be backward compatible.\n- **Some installed dependency versions are wrong (build fails)**\n\n - Revert changes to `package.json` and `package-lock.json`. Remove `node_modules`. Run `npm install` again.\n- **I added a new field to one of the proto files. How do I display it?**\n\n - Winscope uses the proto definitions from when it was compiled, so new fields won't appear by default. To show new fields, rebuild the protos using `npm run build:protos`."]]