本文最后更新于:2025年5月2日 下午
记于 2022 年 6 月 24 日
注意:目前仅限于macos和linux使用
btrace/README.zh-CN.md at master · bytedance/btrace · GitHub
btrace(又名 RheaTrace) 是一个基于 Systrace 实现的高性能 Android trace 工具,它支持在 App 编译期间自动注入自定义事件,并使用 bhook 额外提供 IO 等 native 事件。
关键特征
支持自动注入自定义事件,在编译 Apk 期间为 App 方法自动注入Trace#beginSection(String) 和 Trace#endSection()。
提供额外 IO 等 native 事件,方便定位耗时原因。
支持仅采集主线程 trace 事件。
使用便捷,稳定性高,性能优于 Systrace。
开始
注意:存储权限要申请
自定义的application必须有以下代码,否则会导致btrace插入初始化代码失败
1 2 3 4
| @OverRide protected void attachBaseContext(Context base) { super.attachBaseContext(base); }
|
在您项目根目录下 build.gradle 文件中增加 rhea-gradle-plugin 作为依赖。
注意:btrace版本号可以在这里查询:https://search.maven.org/ 如果打不开可以在阿里云查询:https://developer.aliyun.com/mvn/search

目前版本号是1.0.2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| buildscript { repositories { ... mavenCentral() ... } dependencies { classpath 'com.bytedance.btrace:rhea-gradle-plugin:1.0.2' } }
allprojects { repositories { ... mavenCentral() ... } }
|
接着在 app/build.gradle 文件中应用如下所示插件和依赖。
androidx项目
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| dependencies { implementation "com.bytedance.btrace:rhea-core:1.0.2" }
apply plugin: 'com.bytedance.rhea-trace' rheaTrace {
compilation { traceWithMethodID = false traceFilterFilePath = "${project.rootDir}/rhea-trace/traceFilter.txt" applyMethodMappingFilePath = "${project.rootDir}/rhea-trace/keep-method-id.txt" }
runtime { mainThreadOnly true startWhenAppLaunch true atraceBufferSize "500000" } }
|
android-support项目
本地需要依赖的文件: https://github.com/wesley666/source/blob/main/btrace-Android-support.zip
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:1.3.72" implementation files('libs/rhea-common-1.0.2.jar') implementation files('libs/rhea-core-release.aar') implementation files('libs/rhea-atrace-release.aar') implementation "com.bytedance:bytehook:1.0.3" }
apply plugin: 'com.bytedance.rhea-trace' rheaTrace {
compilation { traceWithMethodID = false traceFilterFilePath = "${project.rootDir}/rhea-trace/traceFilter.txt" applyMethodMappingFilePath = "${project.rootDir}/rhea-trace/keep-method-id.txt" }
runtime { mainThreadOnly true startWhenAppLaunch true atraceBufferSize "500000" } }
|
关于 rheaTrace
,从RheaTrace Gradle Config中了解更多信息。
最后,检测您电脑 python 版本,由于 Systrace 的关系 RheaTrace 仅支持 python 2.7 版本,请将 systrace 环境变量配置在 ~/.bash_profile 文件中。
1
| export PATH=${PATH}:/Users/${user_name}/Library/Android/sdk/platform-tools/systrace
|
RheaTrace使用方法请参考:
btrace/README.zh-CN.md at master · bytedance/btrace · GitHub