欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > btrace2.0使用方法

btrace2.0使用方法

2025/5/3 14:11:34 来源:https://blog.csdn.net/SunIOT/article/details/147671552  浏览:    关键词: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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词