Запустить Winscope

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

Локальная сборка Winscope

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

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

    cd development/tools/winscope
    
  3. Установите зависимости с помощью:

    npm install
    

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

  4. Создайте все целевые объекты prod и test, используя:

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

  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

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

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

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

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

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