Запустить Winscope

Трассировка Winscope является частью платформы Android. На этой странице описаны шаги, необходимые для загрузки, сборки и локального запуска средства просмотра трассировки Winscope.

Сборка Winscope локально

Выполните следующие действия, чтобы настроить компьютер для запуска трассировщика Winscope:

  1. Загрузите исходный код Android .
  2. Перейдите в папку Winscope:

    cd development/tools/winscope
    
  3. Установите зависимости, используя:

    npm install
    

    Чтобы просмотреть список доступных команд, запустите: npm run

  4. Создайте все производственные и тестовые цели, используя:

    npm run build:prod
    
  5. Запустите 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 , выполните следующие действия:

  1. Создайте :framework-minus-apex-intdefs для запуска препроцессора аннотаций:

    mp :framework-minus-apex-intdefs
    
  2. Скопируйте сгенерированный файл 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
    
  3. Загрузите изменения в 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

    • Это происходит, когда файл трассировки был создан с новым определением прототипа, содержащим новые обязательные поля.

      1. Убедитесь, что вы открываете трассировку в правильной версии Winscope (master, S или R).
      2. Если вы создаете новое поле в прототипе, перекомпилируйте прототипы в Winscope, используя npm run build:protos .

  • Некоторые установленные версии зависимостей неверны (сбой сборки)

    • Отмените изменения в package.json и package-lock.json . Удалите node_modules . Запустите npm install еще раз.
  • Я добавил новое поле в один из файлов прототипа. Как мне это отобразить?

    • Winscope использует определения прототипа с момента его компиляции, поэтому новые поля по умолчанию не отображаются. Чтобы отобразить новые поля, перестройте прототипы с помощью npm run build:protos .