用于快速找到高耗时方法,定位解决Android App卡顿问题。通过gradle plugin+ASM实现可配置范围的方法插桩来统计所有方法的耗时,并在浏览器提供友好的界面展示,支持耗时筛选、线程筛选、方法名筛选等。
- 方法耗时数据收集部分:通过gradle plugin+ASM在编译时期对所有方法进行插桩收集方法耗时数据,并进行处理
- 方法耗时数据展示部分:在浏览器上展示方法耗时数据,并支持耗时筛选、线程筛选、方法名搜索等功能
- AndroidStduio插件:用于方便在AndroidStduio顶部栏上快速打开方法耗时数据展示部分【即上面说的第二部分】
详见我的博客:App流畅度优化:利用字节码插桩实现一个快速排查高耗时方法的工具
buildscript {
repositories {
google()
jcenter()
maven { url 'https://jitpack.io' }
maven { url "https://plugins.gradle.org/m2/" }
}
dependencies {
classpath "gradle.plugin.cn.cxzheng.methodTracePlugin:tracemanplugin:1.0.1"
}
}
allprojects {
repositories {
google()
jcenter()
maven { url 'https://jitpack.io' }
maven { url "https://plugins.gradle.org/m2/" }
}
}
dependencies {
implementation 'com.github.zhengcx:MethodTraceMan:1.0.4'
}
apply plugin: "cn.cxzheng.asmtraceman"
traceMan {
open = true
traceConfigFile = "${project.projectDir}/traceconfig.txt"
}
在app启动时(在Application类或者MainActivity中)对MethodTraceMan进行初始化,如下:
MethodTraceServerManager.startService(context)
下面是配置示例:
#配置需插桩的包,如果为空,则默认所有文件都进行插桩(config the package need to trace,If they are empty, all files are traced by default.)
-tracepackage cn/cxzheng/asmtraceman
#在需插桩的包下设置无需插桩的包(Setting up traceless packages under packages that require trace)
-keeppackage cn/cxzheng/asmtraceman/test
#在需插桩的包下设置无需插桩的类(Setting up traceless classes under packages that require trace)
-keepclass cn/cxzheng/asmtraceman/MainActivity
#插桩代码所在类,这里固定配置为:cn/cxzheng/tracemanui/TraceMan(Fixed configuration here: cn/cxzheng/tracemanui/TraceMan)
-beatclass cn/cxzheng/tracemanui/TraceMan
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
这个插件的主要功能是可以在AndroidStduio上快速方便的打开methodtraceman的UI界面,这个插件已上传AndroidStduio的插件仓库,你可以通过在AndroidStduio插件库中搜索MethodTraceMan
来安装这个插件,当然在项目的aspluin目录下也提供了该插件的jar包,具体如何安装AndroidStduio插件,这里就不细说了,可以在网上搜索,安装好之后重启AndroidStduio,就可以在顶部栏看到MethodTraceMan插件的黄色灯泡💡图标了,集成和安装到这里就介绍完毕了,下面我会介绍MethodTraceMan如何使用。
安装后重启,图如下:
完成上面两步后,确保已完成:
- 按要求集成后,Rebuild&Run 启动你的App
- AndroidStduio上已安装好MethodTraceMan插件
接下来会介绍如何使用MethodTraceMan来方便的排查高耗时的方法:
集成及使用过程中有任何问题或者建议,欢迎与我进行交流,添加注明来意,谢谢
Apache2.0.