Запустить 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 Перекомпилирует определения 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 , выполните следующие действия:

  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. Если вы создаете новое поле в proto, перекомпилируйте protos в Winscope с помощью npm run build:protos .

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

    • Отмените изменения в package.json и package-lock.json . Удалите node_modules . Снова выполните npm install .
  • Я добавил новое поле в один из файлов proto. Как его отобразить?

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