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

btrace2.0使用方法

2022 年我研究安卓性能优化的时候,写过一篇:btrace1.0使用方法 - Wesley’s Blog,现在 brace 进化到 2.0 了,让我们一起来看看如何使用。

具体的接入流程可以看官方文档:

bytedance/btrace: 🔥🔥 btrace(AKA RheaTrace) is a high performance Android trace tool which is based on Perfetto, it support to define custom events automatically during building apk and using bhook to provider more native events like Render/Binder/IO etc.

我这里主要记录一下接入的一些报错问题:

目前最新版本是2.0.3-rc03

项目的gradle版本是7.0.2,gradle plugin是7.0.0

编译报错

org.gradle.workers.WorkerExecutionException: There was a failure while executing work items

​ at org.gradle.workers.internal.DefaultWorkerExecutor.workerExecutionException(DefaultWorkerExecutor.java:270)

​ at org.gradle.workers.internal.DefaultWorkerExecutor.await(DefaultWorkerExecutor.java:252)

​ at com.android.build.gradle.internal.tasks.DexArchiveBuilderTaskDelegate.doProcess(DexArchiveBuilderTaskDelegate.kt:227)

​ at com.android.build.gradle.internal.tasks.DexArchiveBuilderTask.doTaskAction(DexArchiveBuilderTask.kt:256)

​ at com.android.build.gradle.internal.tasks.NewIncrementalTask t a s k A c t i o n taskAction taskAction i n l i n e d inlined inlinedrecordTaskAction$1.invoke(BaseTask.kt:66)

​ at com.android.build.gradle.internal.tasks.Blocks.recordSpan(Blocks.java:51)

Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, position: Lcom/xxx/web/CommonHeader;()V, origin: D:\Project\p_dev\app\build\intermediates\transforms\analyticsTrack\Production\release\720.jar:com/xxx/web/CommonHeader.class

需要关注Compilation failed to complete后面的类

如果哪个类报错就可以加入下面的配置,路径"${project.rootDir}/trace-filter/traceFilter.txt"

btrace/GRADLE_CONFIG.MD at master · bytedance/btrace

注意:allowpackage必须先配置,blockpackage必须在其子包下面,可以是类或者包名

[package]
-allowpackage com
-allowpackage org
-allowpackage androidx-blockpackage androidx/exifinterface/media
-blockpackage com/google/android/exoplayer2/ui
-blockpackage com/xxx/web/CommonHeader
-blockpackage org/bouncycastle/jcajce/provider/asymmetric/x509
-blockpackage org/bouncycastle/jcajce/provider/asymmetric/dh
-blockpackage com/nineoldandroids/util
-blockpackage org/bouncycastle/jce/provider/JCEDHPublicKey
# org/bouncycastle/jce/provider/X509CertificateObject
-blockpackage org/bouncycastle/jce/provider

特别注意

如果是windows用户,traceFilter.txt换行符必须改为LF

原因

com/bytedance/rheatrace/plugin/compiling/filter/RheaTraceMethodFilter.kt

parseTraceFilterFile

methodKeepStr.trim { it <= ’ ’ }.replace(“/”, “.”).split(“\n”).toTypedArray()

这里只替换了\n,没有替换\r,会导致解析出来的包名带有\r,导致checkPath失败。

private fun checkPath() {if (allowPackages.isEmpty()) {return}for (blockPath in blockPackages) {var isContain = falsefor (allowPackage in allowPackages) {if (blockPath == allowPackage) {RheaLog.e(TAG, "blockpackage cannot be equal to allowpackage:%s", blockPath)}if (blockPath.startsWith(allowPackage)) {isContain = truebreak}}if (!isContain) {throw GradleException("allowpackage do not contains $blockPath")}}
}

参考

BTrace和Perfetto如何分析性能手把手教你使用BTrace和Perfetto分析性能 高级android开发工 - 掘金

Maven Repository: com.bytedance.btrace » rhea-gradle-plugin

http://www.xdnf.cn/news/3676.html

相关文章:

  • 基于FastApi实现本地部署DeepSeek-R1-Distill-Qwen与流式输出
  • 文章四《深度学习核心概念与框架入门》
  • 读书记:《认知红利》
  • 云盘系统设计
  • Vue3+Element Plus全套学习笔记-目录大纲
  • UE自动索敌插件Target System Component
  • MAAS Anvil - 高可用 MAAS 部署管理工具
  • 纳米AI搜索体验:MCP工具的实际应用测试,撰写报告 / 爬虫小红书效果惊艳
  • Matplotlib核心课程-2
  • JavaWeb学习打卡-Day7-正向代理、反向代理、Nginx
  • 使用AI-01开发板和开源后端服务搭建整套小智服务系统
  • 在运行 Hadoop 作业时,遇到“No such file or directory”,如何在windows里打包在虚拟机里运行
  • 赎金信(简单)
  • 单一职责原则(SRP)
  • 安妮推广导航系统开心版多款主题网址推广赚钱软件推广变现一键统计免授权源码Annie
  • 写了个脚本将pdf转markdown
  • C/C++工程师使用 DeepSeek
  • [面试]SoC验证工程师面试常见问题(三)
  • 2505C++,wmi客户端示例
  • MySQL:联合查询
  • Linux-07-Shell
  • 大模型在终末期肾脏病风险预测与临床方案制定中的应用研究
  • 如何封装一个线程安全、可复用的 HBase 查询模板
  • Encoder-free无编码器多模态大模型EVEv2模型架构、训练方法浅尝
  • Windows 使用set和setx设置环境变量(skywalk3)
  • 2.LED灯的控制和按键检测
  • 【MySQL】事务管理
  • 区块链+IoT:创新场景落地背后的技术攻坚战
  • Python镜像源配置:
  • 数据结构-线性结构(链表、栈、队列)实现