尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

pure-python-adb 插件体系深度解析:6大内置插件监控CPU、内存、电池与流量

pure-python-adb 插件体系深度解析:6大内置插件监控CPU、内存、电池与流量 pure-python-adb 插件体系深度解析6大内置插件监控CPU、内存、电池与流量【免费下载链接】pure-python-adbThis is pure-python implementation of the ADB client.项目地址: https://gitcode.com/gh_mirrors/pu/pure-python-adbpure-python-adb导入名ppadb是一个纯 Python 实现的 ADB 客户端库无需安装 Android SDK 即可在 Python 中操控设备。它的亮点在于一套开箱即用的内置插件体系CPU 占用、内存消耗、电池电量、流量统计、输入模拟、屏幕参数六大能力全部以插件形式内置一行方法调用即可完成监控。本文将带你完整看懂这套插件架构并学会如何扩展自己的插件。为什么不用 adb 命令行而用纯 Python 客户端传统方式是用adb命令行工具连接 adb server命令行方式每次都要解析文本输出写自动化脚本非常繁琐。而pure-python-adb直接以 Python 库的身份连接 adb server默认127.0.0.1:5037返回结构化对象——CPU 统计是对象、内存信息是对象、电量是整数天然适合写监控脚本和自动化测试。 核心体验同样的监控逻辑adb 命令需要写十几行 shell 正则解析用 ppadb 只需device.cpu_percent(1)一行。插件体系如何工作Device 类的多重继承理解这套体系的关键在 ppadb/device.pyclass Device(Transport, Serial, Input, Utils, WM, Traffic, CPUStat, BatteryStats): passDevice类通过多重继承同时混入了所有插件类因此你拿到的每一个device对象都自动拥有全部插件的方法。所有插件都继承自同一个极简基类 Plugin它只要求你实现shell(cmd, handlerNone, timeoutNone)方法——这意味着任何插件本质上就是会执行 shell 命令并解析结果的一族方法。6 个内置插件源码全部位于 ppadb/plugins/device/ 目录插件源码文件核心能力 CPUStatcpustat.pyCPU 占用率、核数、进程/线程 CPU Utilsutils.py内存占用、前台 Activity、PID/UID BatteryStatsbatterystats.py电池电量、电池统计数据 Traffictraffic.py按应用统计网络流量️ Inputinput.py模拟点击、滑动、按键、输入文字 WMwm.py屏幕分辨率与密度插件一CPUStat——实时监控 CPU 使用率CPUStat 通过读取/proc/stat计算整机 CPU 占用是性能监控最常用的插件cpu_percent(interval1)两次采样相减返回整机 CPU 使用率百分比cpu_count()返回 CPU 核心数量get_pid_cpu(pid)返回指定进程的 CPU 统计ProcessCPUStat 对象get_all_thread_cpu(pid)返回进程内每个线程的 CPU 统计设计很精巧TotalCPUStat对象支持和-运算符重载采样相减后直接算出使用率无需手动处理内核累计时间。插件二Utils——查询内存占用与前台 ActivityUtils 插件覆盖了日常调试的高频需求get_meminfo(package_name)返回应用的 MemInfo 对象包含PSS、私有脏页、堆大小等 7 项内存指标get_top_activity()/get_top_activities()获取当前屏幕最上层 Activity包名 Activity 名 PID自动化测试判断是否跳转成功就靠它get_pid()/get_uid()自动兼容不同系统的ps命令差异get_package_version_name()读取应用版本号插件三BatteryStats——电池电量与耗电量统计BatteryStats 提供两个层次的数据get_battery_level()通过dumpsys battery一键获取当前电量百分比get_batterystats()解析dumpsys batterystats -c输出按区块section返回结构化的电池统计数据区块模型定义在 batterystats_section.py配合 scripts/batterystats_codegen.py 这个代码生成脚本区块解析类可以自动生成维护成本极低。插件四Traffic——精确到每个 App 的流量监控Traffic 插件调用get_traffic(package_name)后先查出应用的 UID再从/proc/net/xt_qtaguid/stats读取计数返回一组 TrafficState 对象包含上下行字节数、包数以及 TCP/UDP/其他的分项统计——做流量审计、排查偷跑流量时非常实用。插件五Input——模拟点击、滑动与按键Input 封装了 Androidinput命令input_text(string)输入一段文字input_tap(x, y)/input_swipe(x1, y1, x2, y2, duration)点击与滑动input_keyevent(keycode)发送按键事件支持长按配套的按键码常量表在 ppadb/keycode.py无需死记 KEYCODE 编号。插件六WM——获取屏幕分辨率与密度WM 插件只有两个方法却是自动化必配wm_size()返回 Size 宽高对象wm_density()返回屏幕密度倍数160dpi 为 1.0。做跨设备自动化时先取分辨率再按比例换算坐标就不用手写死坐标了。快速上手3 行代码开始设备监控安装后连接设备即可串联使用全部插件from ppadb.client import Client as AdbClient client AdbClient() # 默认连接 127.0.0.1:5037 device client.device(emulator-5554) print(device.cpu_percent(1)) # CPU 使用率% print(device.get_battery_level()) # 电池电量% print(device.get_meminfo(com.example.app)) # 应用内存信息 print(device.get_traffic(com.example.app)) # 应用流量统计 print(device.wm_size()) # 屏幕分辨率完整示例可参考 example/screencap.py插件行为覆盖见 test/test_plugins.py。如何扩展自己写一个插件得益于插件基类只有shell()一个方法扩展成本几乎为零新建一个继承 Plugin 的类把 shell 命令解析成方法再混入Device即可。整个体系的设计哲学可以概括为一句话——插件 shell 命令 结构化解析这也是它简洁却强大的原因。小结pure-python-adb 的 6 大内置插件用多重继承方式把 CPU、内存、电池、流量、输入、屏幕六大监控能力整合进Device对象让你不依赖 Android SDK 就能用纯 Python 完成设备状态监控与自动化操作是自动化测试和监控脚本的理想选择。【免费下载链接】pure-python-adbThis is pure-python implementation of the ADB client.项目地址: https://gitcode.com/gh_mirrors/pu/pure-python-adb创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表