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

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

相关文章:

  • 多模态大语言模型arxiv论文略读(五十四)
  • 大模型在终末期肾脏病风险预测与临床方案制定中的应用研究
  • 架构进阶:深入学习企业总体架构规划(Oracle 战略专家培训课件)【附全文阅读】
  • 解决C4D中ProRender渲染黑屏
  • Linux运维中常用的磁盘监控方式
  • STL之vector容器
  • Java语言概述
  • 52、【OS】【Nuttx】【OSTest】setvbuf 测试
  • mysql索引及数据库引擎
  • MySQL 第一讲---基础篇 安装
  • 第7篇:RESTful API设计与安全防护
  • 赎金信(简单)
  • 第十六届蓝桥杯 2025 C/C++组 客流量上限
  • 【CTFer成长之路】XSS的魔力
  • 【Java IO流】File类基础详解
  • 瑞萨 EZ-CUBE2 调试器
  • OSPF路由协议配置
  • 变色龙-第16届蓝桥第5次STEMA测评Scratch真题第1题
  • Flowable7.x学习笔记(十七)审批我的待办
  • stm32教程:软件I2C通信协议 代码模板提供
  • 在“蟑螂屋”里叠衣服,我看见人生百态
  • 5月资金面前瞻:政府债净融资规模预计显著抬升,央行有望提供流动性支持
  • 韩国法院将重审李在明案,韩德洙入局能否为大选带来变数?
  • Meta一季度净利增长三成:上调全年资本支出,受关税影响亚洲出口电商广告支出减少
  • 神十九都带回了哪些实验样品?果蝇等生命类样品已交付科学家
  • 山西太原一小区发生爆炸,造成1人遇难21人受伤2人失联