从零上手 adbutils:用 Python 搞定 Android 设备自动化管理与文件同步实战

发布时间:2026/8/16 19:41:14
从零上手 adbutils:用 Python 搞定 Android 设备自动化管理与文件同步实战 从零上手 adbutils用 Python 搞定 Android 设备自动化管理与文件同步实战【免费下载链接】adbutilspure python adb library for google adb service.项目地址: https://gitcode.com/gh_mirrors/ad/adbutilsadbutils 是一款纯 Python 实现的 ADB 客户端库专门面向测试开发与移动自动化工程师。它把设备连接、批量装包、文件同步、录屏取日志等日常操作封装成十几行可维护的代码让你摆脱逐条敲 adb 命令的重复劳动。本文所有示例均基于项目真实 API可直接复制运行。先讲一个真实场景十台手机怎么一口气装完 App假设你手里有十台测试机每次发版都要给每台机器重装 5 个 APK、各截一张图、再回收一遍日志。传统做法是开一个终端对着adb -s 序列号 install -r一条条敲——装到第三台你就开始走神装到第八台大概率漏了某台机器。adbutils 的思路很简单把 adb 变成一段 Python 循环。设备序列号就像每个人的身份证号adb.device_list()会帮你把当前在线设备全部列出来剩下的逻辑交给 for 循环处理。三步上手从安装到看到第一个输出第一步安装依赖。推荐用 pip 一键安装pip3 install adbutils如果你需要完整的可选功能比如解析 APK 信息可以安装pip3 install adbutils[all]。第二步准备设备。手机开启开发者选项和 USB 调试插上电脑后在命令行执行adb devices确认设备状态是device而不是offline。第三步跑通最小示例。新建一个demo.py粘贴以下代码from adbutils import adb for d in adb.device_list(): print(发现设备:, d.serial) d.screenshot(f{d.serial}.png)运行python demo.py30 秒内你就能看到设备列表以及自动落盘的一张张截图——用代码管设备的感觉一下就出来了。不想写 Python 也行python -m adbutils -l可以直接在终端列出所有设备。场景一多台测试机的批量装包与自动化巡检这个场景解决的是重复劳动问题。批量安装的核心是让失败不中断整轮任务adbutils 用AdbInstallError区分安装异常你可以精确捕获每一台机器的失败原因from adbutils import adb, AdbInstallError apks [app_v1.apk, app_v2.apk] for d in adb.device_list(): for apk in apks: try: d.install(apk) # 支持本地文件也支持 http 链接 print(d.serial, 安装成功:, apk) except AdbInstallError as e: print(d.serial, 安装失败:, e.reason)装完包之后巡检脚本同样顺手。adbutils 提供了app_current()前台应用、battery()电量、is_screen_on()是否亮屏等现成接口几行代码就能拼出一份全量设备体检报告再也不用一台台手动点开设置页查看。场景二测试日志与文件的批量回收测试跑完真正的体力活才开始拉日志、收截图、下发新配置。adbutils 的d.sync模块把adb push/pull变成了可批量的对象操作d.sync.push(config.txt, /sdcard/config.txt) # 下发配置 d.sync.pull(/sdcard/result.log, flogs/{d.serial}.log) # 按设备名回收日志如果只想抓关键字日志可以用d.logcat()边过滤边落盘re_filter参数支持正则把.*Error.*相关的崩溃信息单独收集出来logcat d.logcat(logcat.txt, clearTrue, re_filter.*Error.*) # 跑你的测试逻辑…… logcat.stop(timeout3)这里有个小技巧回收的文件名带上d.serial日志按设备归档排查问题时按序列号检索即可效率翻倍。避坑指南新手最容易踩的四个坑① 设备状态一直是 offline。九成原因是手机上没点允许 USB 调试的授权弹窗。先回到命令行执行adb devices看到unauthorized就重新拔插数据线再点一次授权。② 连不上 adb server。端口默认是 5037。如果你在 Docker 容器里跑需要指定宿主机export ANDROID_ADB_SERVER_HOSThost.docker.internal。多台电脑共用一套设备时也可以用ANDROID_ADB_SERVER_PORT切换端口。③ shell 命令卡死。adbutils 的 shell 默认不设超时遇到sleep类命令会一直等。给关键命令加超时是一种好习惯d.shell(sleep 1, timeout0.5)会在超时时抛出AdbTimeout配合try/except就能优雅降级。④ 安装失败但不知道原因。捕获AdbInstallError后读e.reason字段它会给出INSTALL_FAILED_ALREADY_EXISTS这类具体原因需要覆盖安装时可以手动追加-r -t等 flags同时记得先确认 APK 本身能正常解析。进阶探索还有哪些值得玩的能力如果你已经跑通上面两个场景这几个方向值得继续深入端口转发与反向代理d.forward()/d.reverse()可以把设备端口映射到本机配合 scrcpy 这类工具做深度调试。录屏与按键模拟start_recording()/stop_recording()录制 MP4keyevent()/send_keys()模拟按键和输入文本适合做回归演示。socket 直连设备服务create_connection()可以直接连设备上的 TCP/Unix 服务扩展空间很大。命令行全家桶python -m adbutils --track实时监控设备插拔--parse解析 APK 信息--qrcode生成安装二维码。想看实现细节核心 API 都在 adbutils/_device.py底层通信协议可以参考 docs/PROTOCOL.md。想参与开发的话可以git clone https://gitcode.com/gh_mirrors/ad/adbutils后用pip3 install -e .安装开发模式。adbutils 的价值不在多一个 adb 的 Python 封装而在于它把设备管理这件事变成了可循环、可捕获、可维护的代码。下一次发版装包时别再盯着终端一条条敲了——现在就去试试第一个批量安装场景吧。【免费下载链接】adbutilspure python adb library for google adb service.项目地址: https://gitcode.com/gh_mirrors/ad/adbutils创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻