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 中上传更改。
其他指令
除了构建和测试之外,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 版本(主版本、S 版本或 R 版本)上打开跟踪记录。
- 如果您在 proto 上创建新字段,请使用 - npm run build:protos重新编译 Winscope 中的 proto。
 
 
- 某些已安装的依赖项版本不正确(构建失败) - 还原对 package.json和package-lock.json所做的更改。移除node_modules。重新运行npm install。
 
- 还原对 
- 我向其中一个 proto 文件添加了一个新字段。如何显示它? - Winscope 会使用编译时的原始定义,因此默认情况下不会显示新字段。如需显示新字段,请使用 npm run build:protos重新构建 proto。
 
- Winscope 会使用编译时的原始定义,因此默认情况下不会显示新字段。如需显示新字段,请使用 
