williamvon / monitor-for-android

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

设计思路:

  • 设备端离线后台shell脚本监控
  • 用busybox的awk做数据提取存为csv
  • 结果获取到PC端用python脚本生成html报告

依赖文件:

  • 设备端需存在/data/local/tmp/busybox (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 SurfaceFlingerAllocated 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、报告数据刷新会在点击监控结果文件夹名称后刷新

About


Languages

Language:JavaScript 87.1%Language:Python 5.2%Language:Shell 3.5%Language:HTML 2.8%Language:CSS 1.4%Language:Batchfile 0.0%