Android / iOS 双平台日志调试工具抓日志再也不用敲命令了GitHub 地址https://github.com/carterking888/phone_log_tool.git做安卓 / iOS 测试或开发的同学大概都有这种体验排查问题时要一边敲adb logcat、adb shell、ls、pull一边在几十万行日志里翻关键字换台设备还得重新来一遍。Windows 下adb pull遇到中文路径还会悄悄丢文件。于是我用业余时间写了这个桌面端 ADB / iOS 日志与设备调试工具连上手机点几下日志、应用、文件全都能可视化操作。本文分享功能设计和几个踩坑点源码结构也一并放出。功能亮点1. 设备管理Android / iOS 同框USB 无线 ADB 一体管理设备授权状态、ADB 环境自检版本/来源/server 5037一眼看清设备详情型号、系统版本、内核、架构、Root 权限、电量一键复制列号iOS 通过 pymobiledevice3 接入Windows 装 iTunes 驱动提供 usbmux 即可免越狱2. 日志查看筛选要够快、够细main / system / crash / events 四缓冲区实时流内存环形缓冲 5 万行多选筛选级别 / PID / 标签都是多选面板多关键字搜索空格分隔、任一命中即显示命中高亮暂停只停渲染不停采集恢复一次性补齐取消自动滚动 冻结当前视图翻历史日志不怕被新日志顶走一键保存日志操作留痕start/stop/clear 都有操作日志联动3. Cocos 游戏的 JS 日志不用连 Safari 也能抓这是我最想做的功能。Cocos 游戏的console.log在系统日志里默认被吞常规做法是 Mac 上连 Safari Web Inspector 抓。这个工具的做法USB 连接后自动扫描设备侧的 V8 Inspector 调试端口6086 等usbmux 端口转发到本地走 Chrome DevTools Protocol 捕获 console 输出游戏重启自动重连多候选地址依次握手旧的 target id 失效就换下一个更进一步「开启 INFO 日志」按钮通过调试口在游戏里远程执行cc.debug._resetDebugSetting(cc.debug.DebugMode.INFO)把被默认级别吞掉的日志动态打开——不用重打包游戏全程纯 USB、免管理员、免 Mac。4. 应用包管理拖个 APK 就装应用列表按全部 / 用户 / 系统 / 三方 / 已禁用分类存储占用统计安装 APK 支持拖拽.apk / .xapk / .apks都行最大 2GB覆盖 / 降级 / 授权 / 测试包四个 ADB 选项可视化勾选安装过程实时抓日志卸载支持批量iOS 设备的应用列表也能同步展示5. 文件管理绕开 ADB pull 的坑快捷目录直达设备存储容量可视化地址栏直接输路径跳转列表 / 网格两种视图上传 / 新建 / 重命名 / 删除 / 批量下载私有目录/data/data自动 run-as 回退debuggable 包不用 Root 就能浏览和下载下载全部走adb exec-out cat / tar流式写本地文件——这是踩坑换来的设计见下文踩坑记录都是真机实测换来的①adb pull在 Windows 下不可靠。中文远程路径会丢扩展名、带空格直接失败。所以所有下载统一走adb exec-out流式输出目录用tar -cf -打包流式接收字节级一致。②ls -la路径必须带尾斜杠。/sdcard是符号链接不带斜杠只返回链接本身永远列不出内容。③ pywebview 的 js_api 跑在后台线程。每次调用都新建线程高频轮询会产生大量线程和跨线程 COM 噪音——所以前端轮询做了自适应降频有新日志 400ms 一拉空闲降到 2s。④ WebView2 不给 JS 真实拖拽路径。拖 APK 安装时 JS 拿到的只有文件名必须 hook 原生NavigationStarting/DownloadStarting事件才能拿到完整路径而且 CLR 属性访问必须回 UI 线程否则静默硬崩。⑤ Petite-Vue 的渲染期表达式严禁引用未挂载的全局。首渲染抛一次 ReferenceError对应指令的 effect 就永久失效——区块从此消失且不报错排查了很久。⑥ PyInstaller 6 的 macOS BUNDLE 会重排目录。可执行文件在Contents/MacOS、二进制在Contents/Frameworks、数据文件在Contents/Resources和 Windows 的_internal布局完全不同校验脚本必须全 bundle 递归找。⑦ 演示模式必须显式开启。早期版本检测不到设备就自动进演示模式结果假设备数据误导了好几次排查。后来改成空设备就显示空列表想看演示手动点。验证与分发jsdom 离线回归node _dom_check.js渲染 交互冒烟99 项无需真机后端自测python _backend_check.py真机 演示模式双跑Windows 打包Cython 编译 core 为 pyd PyInstaller UPX附fix_and_check.bat处理目标机环境自检macOS 打包build_mac.sh自动建 venv、内置 ADB 到包内GitHub Actions 云端出包Windows 无法交叉编译 Mac 产物写在最后这个工具的核心思路是把高频、繁琐、易错的命令行操作收敛成点几下按钮同时把坑在代码层面堵死下载绕开 ADB pull、私有目录自动 run-as、日志洪流后端预过滤。目前支持 Android 全量功能iOS 覆盖日志 / 应用 / 文件媒体域后续计划把 iOS 文件管理补齐到沙盒域。关键词ADB、logcat、pymobiledevice3、pywebview、Cocos、日志抓取、桌面工具