当前位置: 首页 > news >正文

btrace1.0使用方法

记于 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

image-20250502163841997

目前版本号是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

相关文章:

  • 超预期!淘宝闪购提前开放全国全量,联合饿了么扭转外卖战局
  • ARConv的复现流程
  • 算法笔记.分解质因数
  • 值此五一劳动节来临之际,
  • 【Java IO流】字符输入流FileReader、字符输出流FileWriter
  • CMake separate_arguments用法详解
  • 全国信息素养大赛 图形化挑战赛~复赛练习-在正方形内吗?
  • 软件第三方测试:关键部分、意义、流程及方法全解析?
  • 数字智慧方案5876丨智慧交通枢纽智能化系统建设方案(56页PPT)(文末有下载方式)
  • 对解微分方程分离变量法本质的思考
  • 进程与线程:05 内核级线程实现
  • 综合案例:使用vuex对购物车的商品数量和价格等公共数据进行状态管理
  • GNOME扩展:ArcMenu的Brisk布局左右调换
  • C语言与指针3——基本数据类型
  • 大语言模型能力评定探讨
  • AI实现制作logo的网站添加可选颜色模板
  • 【OFDM过程中正交子载波特性的应用及全面解析】
  • FPGA:介绍几款高速ADC及其接口形式
  • 抽奖算法场景
  • Linux C++ JNI封装、打包成jar包供Java调用详细介绍
  • 巴菲特批评贸易保护主义:贸易不该被当成武器来使用
  • 贵州赤水一处岩体崩塌致4车受损,连夜抢修后已恢复通车
  • 多地晒五一假期前两日成绩单,湖南单日客流同比增长逾三成
  • 对华小额包裹免税取消=更高价格+更慢物流,美消费者为关税政策买单
  • 受天气等影响SC8041航班三次备降延误超12小时,山航致歉
  • 《求是》杂志发表习近平总书记重要文章《激励新时代青年在中国式现代化建设中挺膺担当》