从最初分享安卓端监控方案过去四年了,期间监控方案也有很大变化,更新一版,最初的设计想法
(busybox可到官网对应cpu架构下载)
,命令:adb push busybox /data/local/tmp
adb shell chmod 755 /data/local/tmp/busybox
监控脚本 monitor.sh
adb shell
sh /data/local/tmp/monitor.sh "$monitor_folder" "$monitorWindow" "$monitorPackages" 5 $meminfo_type &
参数说明:
1、monitor_folder = 监控结果文件夹名(/data/local/tmp/$monitor_folder)
2、monitorWindow = fps 监控窗口,不抓取为空""
adb shell dumpsys SurfaceFlinger
Allocated buffers 信息中获取,安卓 8.0 之后有标号如 #0、SurfaceView 后有 “ - ” 传参注意需要""
3、monitorPackages = 额外抓取 heap、views、threads、FD 信息的进程,多个用 | 间隔,不抓取为空""
4、5 = 5 秒间隔
5、meminfo_type = 1,取所有进程 PSS,额外取指定进程详细信息,0 则只取配置进程内存信息
预期监控时长结束后,停止监控:
adb shell touch /data/local/tmp/stop
获取结果
adb pull /data/local/tmp/$monitor_folder
监控脚本 monitor.py
生成报告:(需安装python环境和pandas库)
python monitor.py 文件夹路径
说明:
1、脚本会先遍历路径下 meminfo.csv 所在路径,并使用其上一级目录作为 case 名
2、monitor_HTML 是报告的模板文件,数据采用的是生成 js 动态加载的形式,脚本会将其复制到传参目录下
3、依次处理 csv 数据存为data/case名_csv结果文件夹名
,list.js 为 case 选择列表数据,cpu 和 pss 存储了最大值和极值差的 csv
4、查看报告数据需要浏览器有本地读写权限:
chrome: start chrome.exe --allow-file-access-from-files
firefox: about:config 中 privacy.file_unique_origin属性false
5、报告数据刷新会在点击监控结果文件夹名称后刷新