記于 2022 年 6 月 24 日
btrace1.0使用方法 - Wesley’s Blog
注意:目前僅限于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插入初始化代碼失敗
@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
buildscript {repositories {...mavenCentral()...}dependencies {classpath 'com.bytedance.btrace:rhea-gradle-plugin:1.0.2'}
}allprojects {repositories {...mavenCentral()...}
}
接著在 app/build.gradle 文件中應用如下所示插件和依賴。
androidx項目
dependencies {//rheatrace core libimplementation "com.bytedance.btrace:rhea-core:1.0.2"
}apply plugin: 'com.bytedance.rhea-trace'
rheaTrace {compilation {//為減少 APK 體積, 你可以為 App 中需要跟蹤的方法設置 id 以此來跟蹤此自定義事件, 默認值 false。traceWithMethodID = false //該文件配置決定哪些方法您不希望跟蹤, 默認值 null。traceFilterFilePath = "${project.rootDir}/rhea-trace/traceFilter.txt"//用特指定方法 id 來設置自定義事件名稱, 默認值 null。applyMethodMappingFilePath = "${project.rootDir}/rhea-trace/keep-method-id.txt"}runtime {//僅在主線程抓取跟蹤事件, 默認值 false。mainThreadOnly true //在 App 啟動之初開始抓取跟蹤事件, 默認值 true。startWhenAppLaunch true//指定內存存儲 atrace 數據 ring buffer 的大小。atraceBufferSize "500000"}
}
android-support項目
本地需要依賴的文件: https://github.com/wesley666/source/blob/main/btrace-Android-support.zip
dependencies {//rheatrace core libimplementation "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 {//為減少 APK 體積, 你可以為 App 中需要跟蹤的方法設置 id 以此來跟蹤此自定義事件, 默認值 false。traceWithMethodID = false //該文件配置決定哪些方法您不希望跟蹤, 默認值 null。traceFilterFilePath = "${project.rootDir}/rhea-trace/traceFilter.txt"//用特指定方法 id 來設置自定義事件名稱, 默認值 null。applyMethodMappingFilePath = "${project.rootDir}/rhea-trace/keep-method-id.txt"}runtime {//僅在主線程抓取跟蹤事件, 默認值 false。mainThreadOnly true //在 App 啟動之初開始抓取跟蹤事件, 默認值 true。startWhenAppLaunch true//指定內存存儲 atrace 數據 ring buffer 的大小。atraceBufferSize "500000"}
}
關于 rheaTrace
,從RheaTrace Gradle Config中了解更多信息。
最后,檢測您電腦 python 版本,由于 Systrace 的關系 RheaTrace 僅支持 python 2.7 版本,請將 systrace 環境變量配置在 ~/.bash_profile 文件中。
export PATH=${PATH}:/Users/${user_name}/Library/Android/sdk/platform-tools/systrace
RheaTrace使用方法請參考:
btrace/README.zh-CN.md at master · bytedance/btrace · GitHub