工具
|
核心功能
|
使用
|
adb |
一个客户端服务器程序,使用命令行的方式与设备通信,需要设备开启usb debugging。 功能包括:列设备、安装apk、拷贝文件、server启停、运行shell |
adb devices adb bugreport 打印分析报告 adb install path_to_apk adb push local remote adb pull remote local adb logcat [optons] [filter-spec]:日志查询 adb shell |
bmgr |
应用的备份、恢复、擦除 |
备份设置:adb shell bmgr backup <pkg> 备份执行:adb shell bmgr run 执行恢复:adb shell bmgr restore <pkg> 擦除数据:adb shell bmgr wipe <package> 开关设置:adb shell bmgr enable <boolean> |
am |
activity管理,activity、service、broadcast的发送,杀进程,profile,dump,屏幕尺寸,uri转换 |
adb shell am start [options] <INTENT> adb shell startservice [options] <INTENT> adb shell broadcast [options] <INTENT> adb shell force-stop <PACKAGE> adb shell kill [options] <PACKAGE>/kill-all instrument [options] <COMPONENT> profile start <PROCESS> <FILE>/profile stop <PROCESS> dumpheap [options] <PROCESS> <FILE> am display-size 1280x800/am display-density 480 to-uri <INTENT>/to-intent-uri <INTENT> |
pm |
package管理,列举、安装、卸载、发放回收权限、创删用户 |
adb shell pm list packages [options] <FILTER> list instrumentation/features/libraries/users install [options] <PATH>/uninstall [options] <PACKAGE> grant <PACKAGE_PERMISSION>/revoke <PACKAGE_PERMISSION> create-user <USER_NAME>/remove-user <USER_ID> |
procrank |
各进程内存使⽤情况排⾏ |
adb shell procrank |
dumpsys |
meminfo查看dalvik和native的内存占用情况 |
adb shell dumpsys | grep DUMP adb shell dumpsys batteryinfo adb shell dumpsys meminfo com.alibaba.*** |
showmap |
查看进程各个部分占用的内存情况 |
adb shell showmap 8179 |
其他常见命令 |
getprop 返回Android的所有系统属性 watchprosp动态监视这些属性的变化 getevent 打印所有的键盘和触摸事件 printenv 系统环境变量 dmesg (查看 Android Linux Kernel 运行信息) |
|
monitor |
多个监控分析工具的集合,dump、thread、profiling、systrace、traceopengl calls |
命令行执行monitor/sdk的tools目录执行monitor.bat |
Traceview |
Traceview是图形化的日志查询器,提供时间线面板方便查看线程和方法的起始时间,profiling面板查看方法内的执行信息(Traceview分析时会禁止JIT,容易导致执行时间分析的不准确,多耗费的时间可能因为JIT编译而优化掉) |
trace文件可以在代码里调用api实现: Debug.startMethodTracing("calc"); // ... Debug.stopMethodTracing(); 也可以通过DDMS里的start tracking按钮实现 拷贝:adb pull /sdcard/calc.trace /tmp 分析:traceview /tmp/calc Incl Cpu Time:方法总耗时,含内部调用其他方法的时间 Excl Cpu Time:方法自身耗时,不含内部调用其他方法的耗时 Calls + Recur Calls:被调用次数 及 递归调用次数 |
hprof-conv |
dump后的hprof文件需要转换下才能被mat打开 |
hprof-conv 1.hprof 2.hprof |
Draw 9-patch |
生成拉伸不失真图片,可以定义哪里可以拉伸,哪里是内容区域 |
sdk的tools目录运行draw9patch.bat |
Hierarchy Viewer |
提供层级浏览,调试优化界面,提供了宝贵的分析信息,以便了解布局里面的每一个视图控件测量、渲染和绘制要花多少时间 |
sdk的tools目录运行hierarchyviewer.bat |
layoutopt |
布局分析工具 |
layoutopt 全路径.xml |
lint |
静态代码分析工具,发现潜在的Bug和性能、安全问题 |
lint myproject lint --check MissingPrefix myproject:检测一项 lint --check Accessibility --html accessibility_report.html myproject:生成报告 lint --list lint -Wall 检测全部warning项目 |
monkey |
可以产生用户点击、触摸、手势等事件的程序,可以在开发阶段进行测试 可以通过参数设置事件数、包限制、事件类型等参数,monkey会进行监控并进行必要的报告 |
adb shell monkey [options] <event-count> adb shell monkey -p your.package.name -v 500 - v[number] number:制定发送伪随机事件的次数 -p <allowed-package-name> -c <main-category> --throttle [milliseconds]:每次发送事件的时间间隔 |
ProGuard |
一个通过删除无用代码、重命名方式压缩、优化、混淆代码的工具,release模式自动运行 |
创建工具后会自动生成proguard.cfg文件,可配置如何混淆代码,运行后会自动生成多个txt文件说明混淆后和混淆前的关联信息 -keep public class <MyClass>避免清理到必要的类 反处理:retrace.bat -verbose mapping.txt obfuscated_trace.txt |
Systrace |
通过捕获应用进程和系统进程信息实现性能分析,会合并android内核(CPU/磁盘)数据生成报告,非常适合于分析展示慢问题。 当前只能在linux平台上使用,需要安装python并配置环境变量,需要android4.1以上版本,需要USB调试 |
可以通过Eclipse、Android Studio、Device Monitor及命令行执行,可以通过代码调用API执行,-o输出html报告 python systrace.py [options] [category1] ... [categoryN] python systrace.py --time=10 -o mynewtrace.html sched gfxview wm |
Wireshark/tcpdump |
抓包工具,需要root手机 |
下载安装tcpdump到手机里,别安装到SD卡 提高权限:chmod 777 tcpdump 开始抓包:tcpdump -p -vv -s 0 –w [pcapfilePath] tcpdump -p -vv -s 0 –w [pcapfilePath] 按Ctrl+C停止 导出.pcap日志文件后用wireshark分析 |
StrickMode |
限制模型,开发人员选项里可以开启,在代码里启动后可以帮助分析不规范的代码实现 |
我们通常在 Activity 或者自定义的Application类中启动StrictMode,代码如下: public void onCreate() { if (DEVELOPER_MODE) { StrictMode.setThreadPolicy(newStrictMode.ThreadPolicy.Builder() .detectDiskReads() .detectDiskWrites() .detectNetwork() // or .detectAll() for all detectable problems .penaltyLog() .build()); StrictMode.setVmPolicy(newStrictMode.VmPolicy.Builder() .detectLeakedSqlLiteObjects() .detectLeakedClosableObjects() .penaltyLog() .penaltyDeath() .build()); } super.onCreate(); } |
RE 浏览器 |
root文件浏览器,修改 host 文件 |
|
开发人员选项 |
绘图、GPU、监控等 |
|
Emmagee |
CPU、内存、流量、电量 |
Emmagee:性能测试小工具 开源地址:https://github.com/NetEase/Emmagee apk下载地址:http://emmagee.googlecode.com/files/Emmagee.apk |
zipalign |
对apk进字节对齐 :zipalign -c -v 4application.apk elcipse里的ADT插件也可以导出对齐:Android Tools=>Exports Signed Application ... |
使用 zipalign对apk进字节对齐,不然会耗费更多内存。 |
时间: 2024-10-02 12:00:00