English README.md 中文 README_zh.md
TraceFix 是一款 Android 插件,主要功能是通过编译插桩的形式,丰富 App 进程在 Systrace 中的信息,方便开发在本地通过 Systrace 进行响应速度和流畅度的分析
TraceFix 插件在 Android 项目编译的时候,在函数头和尾通过 ASM 插桩的形式插入 Trace 点,方便后续抓取 Systrace 的时候,可以看到比较丰富的信息,方便进行流畅度和响应速度的 Debug
- 在 Android Studio 的项目的 gradle.properties 中配置 TRACEFIX_VERSION
TRACEFIX_VERSION=0.0.6
- 在需要插桩的 Module 的 build.gradle 添加插件 com.androidperf:tracefix 信息,(如果 Module 里面没有 buildscript ,可以加到 root 目录下面的 build.gradle 中,或者在子 Module 里面复制粘贴下面内容到 build.gradle 文件中 )点击 Sync
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath("io.github.gracker:TraceFix:${TRACEFIX_VERSION}"){ changing = true }
}
}
- 在 module 的 build.gradle 文件中添加 plugin
apply plugin: 'auto-add-systrace'
- 编译和安装 apk,然后使用命令行抓取 Systrace 文件, 必须要加 -a 并提供包名,否则 Systrace 中不会显示 :" -a your-package-name"
python /path-to-your-systrace/systrace.py -a your-package-name
for example
python /mnt/d/Android/platform-tools/systrace/systrace.py -a com.android.settings
- 在 Chrome 或者 https://ui.perfetto.dev/#!/viewer 打开 Systrace,找到对应的应用进程查看
- 加入完整包名
- 加入 Method Map 功能(防止混淆后没法对应)
- 黑白名单控制功能
- Init 函数优化
- get、set 函数优化
- README 添加 Version 标志
远程插件调试 Demo,不依赖本地的插件,用来测试远程发布的插件是否正常
本地插件调试 Demo,插件发布到本地后,用来本地快速调试验证效果
单独编译的开源项目,需要单独使用 AS 打开,用来做测试,由于是实际项目,所以插桩内容比较多,也是用来做 Debug 的
核心插件实现
App 代码
App 代码的出口和入口都有自动进行插桩
插桩后,抓取 Systrace 可以看到,App 自己加入的函数会被加上 TraceTag,可以看到更加详细的信息
可以看到插桩后,比原生的要多显示很多自己加的代码逻辑