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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/79582.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++八股--5--设计模式--适配器模式,代理模式,观察者模式

3. 观察者模式(也叫做观察者-监听者模式,发布-订阅模式) 主要关注对象的一对多关系,也就是多个对象都依赖于一个对象,当该对象状态改变时,其余对象都能得到对应的通知 如:一组数据(数…

ArcGIS arcpy代码工具——根据属性结构表创建shape图层

系列文章目录 ArcGIS arcpy代码工具——关于工具使用的软件环境说明 ArcGIS arcpy代码工具——批量对MXD文件的页面布局设置修改 ArcGIS arcpy代码工具——数据驱动工具批量导出MXD文档并同步导出图片 ArcGIS arcpy代码工具——将要素属性表字段及要素截图插入word模板 ArcGIS…

机器视觉开发-打开摄像头

以下是使用Python和OpenCV打开摄像头的最简单实现: import cv2# 打开默认摄像头(通常是0) cap cv2.VideoCapture(0)# 检查摄像头是否成功打开 if not cap.isOpened():print("无法打开摄像头")exit()print("摄像头已打开 - 按…

(Go Gin)Gin学习笔记(三)数据解析和绑定:结构体分析,包括JSON解析、form解析、URL解析,区分绑定的Bind方法

1. 数据解析和绑定 bind或bindXXX函数(后文中我们统一都叫bind函数)的作用就是将请求体中的参数值绑定到对应的结构体上,以方便后续业务逻辑的处理 1.1 JSON数据解析和绑定 客户端传参,后端接收并解析到结构体 package mainim…

Kubernetes(k8s)学习笔记(四)--入门基本操作

本文通过kubernetes部署tomcat集群,来学习和掌握kubernetes的一些入门基本操作 前提条件 1.各个节点处于Ready状态; 2.配置好docker镜像库(否则会出现ImagePullBackOff等一些问题); 3.网络配置正常(否则即使应用发布没问题,浏…

【大模型面试每日一题】Day 7:为什么大模型训练选择 Adam 而非 SGD?Adam 的关键改进是什么?

【大模型面试每日一题】Day 7:为什么大模型训练选择 Adam 而非 SGD?Adam 的关键改进是什么? 📌 题目重现 🌟🌟 面试官:为什么大模型训练选择 Adam 而非 SGD?Adam 的关键改进是什么…

轻量级在线Excel预览工具

轻量级在线Excel预览工具 简介 在日常工作中,我们经常需要快速查看Excel文件的内容,但不一定总是需要打开完整的Excel软件。为了解决这个问题,我开发了一个轻量级的在线Excel预览工具,让您可以通过浏览器快速查看Excel文件内容。…

[Vue]props解耦传参

在 Vue 中,通过 props 传递路由参数(即 props 解耦)是一种将组件与路由参数解耦的推荐方式。这种方法能显著提升组件的独立性、复用性和可维护性。以下是详细解释: 一、什么是 props 解耦? props 解耦是指&#xff1a…

Trae 使用心得:从新手到上手

Trae 使用心得:从新手到上手 最近,我开始试用 Trae,一款新兴的 AI 开发工具。在使用过程中,我发现它与我之前用过的 Cursor 有些不同,也带来了一些新的体验。 初体验:操作的便利性 一开始,我…

游戏引擎学习第256天:XBox 控制器卡顿和修复 GL Blit 伽玛问题

回顾并为今天定下基调 今天的主要任务是让我们的性能分析工具正常工作,因为昨天已经完成了结构性工作。现在,剩下的工作大部分应该是调试和美化。性能分析工具现在应该已经基本可用了。昨天我们在这个方面取得了很大的进展。 接下来,我们将…

PVD中断检测掉电

文章目录 概述配置掉电擦写注意 概述 STM32 PVD功能具体可以检测到上电、掉电瞬间,其处理方式有中断响应及事件响应。掉电设置为上升沿触发,上电为下降沿触发 配置 1.开启PVD中断并设置其优先级 2.配置响应中断或事件的阈值电压 3.配置响应模式 生成…

快速掌握--cursor

Cursor - The AI Code Editor 官网下载安装 详细教程:cursor 下载安装使用(保姆教程)_cursor下载-CSDN博客 不知道为啥,第一次给我用的是繁体回答 然后改了一下询问方式 codebase就是告诉ai可以从整个项目中找答案&#xff0…

1993年地级市民国铁路开通数据(地级市工具变量)

1993年地级市民国铁路开通数据(地级市工具变量) 1、时间:1933年 2、指标:是否开通铁路 3、来源:《Z国铁道便览》 4、方法说明:参考田坤(2023)参考章元(2008&#xff…

AI优化SEO关键词实践路径

内容概要 随着人工智能技术深度渗透数字营销领域,SEO关键词优化正经历从人工经验驱动向算法智能决策的跃迁。本文聚焦AI技术在SEO关键词全生命周期管理中的应用框架,系统阐述智能算法如何通过海量数据挖掘潜在搜索需求、解析用户意图的语义关联性&#…

论微服务架构及其应用

试题四 论微服务架构及其应用 微服务提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通。在微服务架构中,每个服务…

基于SpringBoot+Vue实现的电影推荐平台功能三

一、前言介绍: 1.1 项目摘要 2023年全球流媒体用户突破15亿,用户面临海量内容选择困难,传统推荐方式存在信息过载、推荐精准度低等问题。传统推荐系统存在响应延迟高(平均>2s)。随着互联网的快速发展,…

ARM 算数指令

加法 ADD 减法 SUB 取负 NEG 比较 CMP 乘法 MUL 移位 LSL、LSR、ASL、ASR、ROL、ROR加法和减法 绝大多数微处理器都实现了带进位的加法指令,能够将两个操作数和条件码寄存器中的进位位加到一起。这条指令会使字长大于计算机固有字长的链接运算更加方便。 说明了如何…

JAVA---集合ArrayList

集合 1. 自动扩容 ,集合长度可变 2. 只可以存引用数据类型,如果要存基本数据类型,需要将其转换成对应的包装类 ArrayList 定义在 java.util 下的,实现了 List 接口。ArrayList 内部以动态数组的形式存储元素,这意…

Scrapy框架之【settings.py文件】详解

settings.py 文件的主要作用是对 Scrapy 项目的全局设置进行集中管理。借助修改这个文件中的配置项,你可以对爬虫的行为、性能、数据处理等方面进行灵活调整,而无需修改爬虫代码。 ①默认英文注释settings.py # Scrapy settings for douban project # …

Java变量学习笔记

Java变量 -为什么需要变量? 一个程序就是一个世界 变量是程序的基本组成单位 不论是使用哪种高级程序语言编写程序,变量都是其程序的基本组成单位,比如: //变量有三个基本要素(类型名称值) class Test{public static void main(String [largs){int a1;…