android app如何查看耗时和卡顿,GitHub - ouyangpeng/MethodTraceMan: 用于快速找到高耗时方法,定位解决Android App卡顿问题。通过gradle pl...

MethodTraceMan

用于快速找到高耗时方法,定位解决Android App卡顿问题。通过gradle plugin+ASM实现可配置范围的方法插桩来统计所有方法的耗时,并在浏览器提供友好的界面展示,支持耗时筛选、线程筛选、方法名筛选等。

预览

f4cc740478b41ab3d9459939292b0b3a.png

整个项目包括三部分:

方法耗时数据收集部分:通过gradle plugin+ASM在编译时期对所有方法进行插桩收集方法耗时数据,并进行处理

方法耗时数据展示部分:在浏览器上展示方法耗时数据,并支持耗时筛选、线程筛选、方法名搜索等功能

AndroidStduio插件:用于方便在AndroidStduio顶部栏上快速打开方法耗时数据展示部分【即上面说的第二部分】

实现及原理

QuickStart

Step1 集成与配置

root project build.gradle

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/" }

}

}

app module project build.gradle

dependencies {

debugImplementation 'com.github.zhengcx:MethodTraceMan:1.0.4'

releaseImplementation 'com.github.zhengcx:MethodTraceMan:1.0.5-noop'

}

apply plugin: "cn.cxzheng.asmtraceman"

traceMan {

open = true

traceConfigFile = "${project.projectDir}/traceconfig.txt"

}

release包下依赖的是noop包,里面不会做任何操作,也不会增加包大小。

在App启动时对MethodTraceMan进行初始化

在app启动时(在Application类或者MainActivity中)对MethodTraceMan进行初始化,如下:

MethodTraceServerManager.startService(context)

在app module的根目录下创建一个名叫traceconfig.txt的配置文件,并在里面对插桩范围进行配置

下面是配置示例:

#配置需插桩的包,如果为空,则默认所有文件都进行插桩(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

在AndroidManifest.xml中检查是否开启了网络权限,如果没有的话,请开启网络权限

最后,Rebuild项目并运行安装你的app,所有方法就会进行耗时插桩

Step2 安装AndroidStduio辅助插件: MethodTraceMan

这个插件的主要功能是可以在AndroidStduio上快速方便的打开methodtraceman的UI界面,这个插件已上传AndroidStduio的插件仓库,你可以通过在AndroidStduio插件库中搜索MethodTraceMan来安装这个插件,当然在项目的aspluin目录下也提供了该插件的jar包,具体如何安装AndroidStduio插件,这里就不细说了,可以在网上搜索,安装好之后重启AndroidStduio,就可以在顶部栏看到MethodTraceMan插件的黄色灯泡💡图标了,集成和安装到这里就介绍完毕了,下面我会介绍MethodTraceMan如何使用。

安装后重启,图如下:

a5c8dc9fab2ab1138bae1a3ab1597705.png

Step3 使用介绍

完成上面两步后,确保已完成:

按要求集成后,Rebuild&Run 启动你的App

AndroidStduio上已安装好MethodTraceMan插件

接下来会介绍如何使用MethodTraceMan来方便的排查高耗时的方法:

1.将手机通过Usb连接电脑,确保连接成功。

2.启动APP后,此时点击AndroidStduio顶部栏的MethodTraceMan灯泡小图标,则会在浏览器上打开MethodTraceMan的UI界面如下:

01c74cd39c662d5095c9280687cf029d.png

3.点击“开始方法耗时统计按钮”,然后开始随意操作你的app

753e1272276798ceda1471fc3d7fa498.png

4.操作完app后,点击“结束方法耗时统计”按钮,此时会输出所有方法的耗时统计,你可以进行耗时筛选、线程筛选、方法名搜索等进行筛查

7e0256956ce01c3789b9b5c9ffafb230.png

dec8ccbb512d62605a0acd51c4f871a3.png

注意:

请不要同时打开两个集成了此项目的App,会导致耗时数据无法传送到浏览器的UI界面

End 欢迎Star/Fork/Issue.

集成及使用过程中有任何问题或者建议,欢迎与我进行交流,谢谢

License

Apache2.0.

About Me

Github: DavidSu

博客: 舒大飞

WeChat:zcx7hao

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值