在项目根目录的build.gradle文件中添加rhea-gradle-plugin作为依赖:
buildscript { dependencies { classpath 'com.bytedance.btrace:rhea-gradle-plugin:2.0.3-rc02' } }
然后,在app/build.gradle文件中应用以下插件和依赖。
dependencies { // rheatrace核心库 implementation "com.bytedance.btrace:rhea-core:2.0.3-rc02" } ... apply plugin: 'com.bytedance.rhea-trace' ... rheaTrace { compilation { traceFilterFilePath = "${project.rootDir}/trace-filter/traceFilter.txt" needPackageWithMethodMap = true applyMethodMappingFilePath = "" } }
RheaTrace 2.0简化了编译插件配置,只需要一个编译配置来控制编译期间的行为。RheaTrace 1.0中的运行时配置已被弃用,但为了确保升级时的兼容性,我们仍然保留了运行时参数配置,尽管它不会影响行为。相反,在RheaTrace 2.0中, 动态配置是通过脚本中的命令行参数实现的,这将在后面详细描述。
参数 | 默认值 | 描述 |
---|---|---|
traceFilterFilePath | null | 此文件决定哪些方法需要被插桩,其用法与RheaTrace 1.0一致。请参考:RheaTrace Gradle插件配置 |
applyMethodMappingFilePath | null | 可以通过指定上一次编译输出的methodMapping.txt文件路径来指定设备的方法ID,以确保多次编译的方法ID一致。 |
needPackageWithMethodMap | true | 是否将methodMapping.txt文件打包到apk内。 |
要使用RheaTrace 2.0,请按以下步骤操作:
java -jar rhea-trace-shell.jar -a ${你的应用包名} -t 10 -o output.pb -r rhea.all sched -fullClassName
版本 | 发布日期 | 下载 | 发布说明 |
---|---|---|---|
2.0.0 | 2023-06-24 | rhea-trace-shell-2.0.0.jar | 2.0.0 首次发布 |
下表描述了 RheaTrace 2.0 命令行参数:
参数 | 默认值 | 描述 |
---|---|---|
-a $applicationName | 不适用 | 指定您的应用程序包名 |
参数 | 默认值 | 描述 |
---|---|---|
-o $outputPath | 不适用 | 指定保存跟踪文件的路径。默认值根据时间戳自动生成。 |
-t $timeInSecond | 5 | 指定跟踪时间长度,单位为秒。 |
-mode $mode | 根据设备 | 指定跟踪模式。目前支持两种模式:1. perfetto:8.1及以上系统的默认模式,允许收集应用程序函数以及系统atrace和ftrace的跟踪。2. simple:8.1以下系统的默认模式,允许收集应用程序函数以及系统atrace的跟踪。 |
-maxAppTraceBufferSize $size | 500000000 | 指定跟踪收集期间使用的缓冲区大小,单位为字节。通常不需要配置此参数,除非遇到类似以下提示:MaxAppTraceBufferSize太小。预期100515704 实际100000000。请在命令中添加-maxAppTraceBufferSize 100515704注意:maxAppTraceBufferSize仅在应用程序启动后的第一次跟踪中生效。 |
-threshold $ns | 0 | 指定跟踪收集期间的函数时间阈值,单位为纳秒。此参数可在跟踪时间较长时减小跟踪文件的大小。 |
-s $serial | 指定通过adb连接的设备。 | |
-mainThreadOnly | 不适用 | 仅跟踪主线程。 |
-r | 自动重启应用程序以捕获启动跟踪。 | |
-fullClassName | 启用跟踪信息的包名。 | |
-deeplink $deeplink | 不适用 | 指定深链接。 |
rhea.binder | 启用binder信息增强。 | |
rhea.render | 启用渲染监控功能。 | |
rhea.io | 启用I/O监控功能。 | |
rhea.thread | 启用线程创建监控功能。 | |
rhea.block | 启用park/unpark/wait/notify监控功能。 | |
rhea.all | 启用上述所有RheaTrace增强监控功能。 | |
-debug | 打印调试日志。 | |
--list | 显示设备支持的类别列表。 |
如果您对RheaTrace 2.0的内部细节感兴趣,可以参考以下文档:RheaTrace 2.0内部原理详解!
编号 | 问题 | 建议 |
---|---|---|
1 | 某些自定义ROM可能在获取Perfetto跟踪时遇到失败,错误信息如下: <blockquote>错误:未找到systrace文件:rheatrace.workspace/systemTrace.trace<br/> 提示:您的设备可能不支持perfetto。请尝试使用 -mode simple |