Android性能相关--工具篇

来源:互联网 发布:淘宝香云纱 编辑:程序博客网 时间:2024/06/06 15:45

Android System Trace

功能:主要用于发现性能瓶颈,可展示每个Frame的情况(Frame),查看有性能问题的点(Alert)
用法:Android Device Monitor -> Device -> Capture System Wide Trace ;收集一段时间内某进程的信息
这里写图片描述
Alert
这里写图片描述
Frame
这里写图片描述

Traceview

功能:卡顿检测,可展示每个方法的用时,调用次数
用法:两种打开姿势(AndroidStudio或Android Device Monitor)

  • AndroidStudio
    这里写图片描述
    这里写图片描述
  • Android Device Monitor -> Device -> Start/Stop Method Profiling
    这里写图片描述

HierarchyViewer

功能:查看UI布局信息,优化布局
用法:Android Device Monitor -> Device -> Dump View HierachyViewer for UI automator
这里写图片描述

MAT

功能:内存泄露分析
用法:个人经验,内存泄露就是无用的对象无法被GC回收,很粗浅的一个判断就是,假设你怀疑一个Activity有内存泄露情况,可以在AndroidStudio中观察内存变化,然后进入Activity做操作,退出再进入再操作如此重复N次,如果内存不断地增加则很有可能发生内存泄露了。而MAT可以帮我们找出泄露的是哪个对象。MAT的用法这里引用大神的一个系列

  • Android最佳性能实践(一)——合理管理内存
  • Android最佳性能实践(二)——分析内存的使用情况
  • Android最佳性能实践(三)——高性能编码优化
  • Android最佳性能实践(四)——布局优化技巧

Lint

Android Lint可以在以下几个层面分析代码:correctness正确性,security安全性,performance性能,usability可用性,accessibility可访问性和internationalization国际化

解决的问题

  • 遗漏文案翻译或者冗余文案翻译
  • 布局性能(以前是 layoutopt工具,可以解决无用布局、嵌套太多、布局太多)
  • 未使用到资源
  • 不一致的数组大小
  • 国际化问题(硬编码)
  • 图标的问题(重复的图标,错误的大小)
  • 可用性问题(如不指定的文本字段的输入型)
  • manifest文件的错误

手机自带功能

  • Debug GPU Overdraw:用来检测UI的重绘次数
  • Profile GPU Rendering:用来检测UI绘制帧的速率和耗时
  • 窗口动画缩放/过渡动画缩放/动画程序时长缩放:动效出问题的时候用得上,能帮你看到许多东西
  • 严格模式:报告与线程及虚拟机相关的策略违例,监视那些本不应该在主线程中完成的工作或者其他的一些不规范和不好的代码(包括:主线程里:disk读、disk写、网络访问)
  • adb shell dumpsys gfxinfo com.letv.android.supermanager 查看掉帧率
  • adb shell am start -W 包名/Activity路径 查看Activity启动时间,调用后会自动启动Activity。eg:adb shell am start -W com.android.demo/.activity.DemoActivity

am、pm命令

一、am
1.am启动一个activity,可以输出activity启动时间
adb shell am start -W -n com.android.gallery3d/.MainActivity
-n使用包名加类名,还有a动作,c CATEGORY等
2.am发送一个广播,使用action
adb shell am broadcast -a magcomm.action.TOUCH_LETTER
3.am发送一个带参数的广播,使用action
adb shell am broadcast -a magcomm.action.TOUCH_LETTER –es letter “e”
4.am启动一个服务,不带参数时默认使用包名加类名启动,参数时n,a,c
adb shell am startservice com.android.music/.MediaPlaybackService
5.关闭一个activity或者服务之类,使用包名就行,只是强制退出,相当于Home按键,应用处于后台
adb shell am force-stop com.android.gallery3d

二、pm
1、可以列出手机上安装的apk与对应的软件包,由于使用命令删除apk时,需要知道包名,通过这条命令加上grep或者find就能找到需要的软件的包名
adb shell pm list packages -f
2、找出对应包的安装目录路径,两条指令结合,可以知道要拷贝给别人的软件位于手机什么地方
adb shell pm path com.android.gallery3d
2.可以列了使用的权限
adb shell pm list permission-groups
adb shell pm list permissions

cpu命令查看

命令:cat /proc/stat
这里写图片描述
这里写图片描述


其他

  • Battery Historian:耗电分析工具
  • Bugly:定位各种闪退的BUG http://bugly.qq.com/
  • GT:各种测 http://gt.tencent.com/index.html
  • BlockCanary(阿里)ANR检测
  • LeakCanary 内存泄露自动探测,一个Android和Java的内存泄露检测库,可以大幅度减少了开发中遇到的OOM问题
  • 弱网络环境工具:Fiddler http://blog.csdn.net/kittyboy0001/article/details/38492567