Winscope 跟踪是 Android 框架的一部分。本页概述了在本地下载、构建和运行 Winscope 轨迹查看器所需的步骤。
在本地构建 Winscope
请按照以下步骤设置您的 PC,以便运行 Winscope 跟踪器:
- 下载 Android 源代码。
导航到 Winscope 文件夹:
cd development/tools/winscope
使用以下命令安装依赖项:
npm install
如需查看可用命令的列表,请运行以下命令:
npm run
使用以下命令构建所有生产和测试目标:
npm run build:prod
使用以下命令运行 Winscope:
npm run start
构建单独的部分
您可以使用以下命令单独构建 Winscope 的各个部分:
命令 | 说明 |
---|---|
build:trace_processor |
检出并重新构建最新版本的 Perfetto 的 trace_processor 。 |
build:protos |
重新编译 proto 定义。 |
运行测试
Winscope 包含单元测试和端到端测试。如需运行这些测试,请使用 npm run
<command>
:
命令 | 说明 |
---|---|
test:unit:ci |
以更简洁的格式运行单元测试,适用于 CI 或提交前钩子。 |
test:unit:dev |
以更详细的格式运行单元测试,以便进行 本地开发。此模式会监控更改并自动重新运行正确的测试。 |
test:e2e |
运行端到端测试,例如 跨工具协议的测试。 |
test:presubmit:quiet |
以更简洁的格式构建所有提交前单元测试、lint 工具和图 分析,以便用于 CI 或提交前 钩子。 |
test:presubmit |
以更详细的格式构建所有提交前单元测试、 lint 工具和图分析,以便进行本地开发。 |
test:all |
以更详细的格式运行所有测试(单元测试和端到端测试)、 lint 工具和图分析,以便进行本地开发。 |
更新了 @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
使用
repo upload
将 Winscope 中的更改上传。
其他指令
除了 build 和测试之外,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 上创建了新字段,请使用
npm run build:protos
在 Winscope 中重新编译 proto。
某些已安装的依赖项版本有误(构建失败)
- 还原了对
package.json
和package-lock.json
所做的更改。移除了node_modules
。再次运行npm install
。
- 还原了对
我向其中一个 proto 文件添加了一个新字段。如何显示?
- Winscope 使用的是编译时使用的 proto 定义,因此默认情况下不会显示新字段。如需显示新字段,请使用
npm run build:protos
重新构建 proto。
- Winscope 使用的是编译时使用的 proto 定义,因此默认情况下不会显示新字段。如需显示新字段,请使用