资讯详情

Wear OS手表ADB调试实战:无线配对、命令脚本与日志抓取

📅 2026/9/16 12:31:59 | 华诺云谱 👁 阅读
Wear OS手表ADB调试实战:无线配对、命令脚本与日志抓取
简介安卓手表ADB实用工具箱3.8.0是一款面向Android智能手表用户的调试与管理工具基于ADB实现电脑与手表的深度交互适合开发者、刷机爱好者和进阶玩家解决手表应用安装卸载、文件传输、日志查看与系统优化等日常问题。压缩包共含999个文件以可执行主程序、动态链接库、Python扩展模块、脚本、数据文件及图标资源为主并内置大量时区数据整体大小约78.73MB。工具覆盖面广包含设备连接管理、批量安装或卸载应用、文件双向传输、日志抓取与系统调试等核心功能且界面简洁易用支持图形化操作。已有5609人学习下载。使用者可获得便携工具箱无需复杂命令行即可完成常见ADB调试任务配合相应支持文档适合快速排查手表故障和深度定制。对于希望提升智能手表可玩性的用户这套资源能显著降低上手门槛。1. 手表调ADB比手机麻烦得多这个工具箱把环境、配对和命令打包在一起把一块Wear OS手表接到电脑上调ADB会发现和手机完全不是一套流程手表没有标准数据口无线调试拆成配对端口和连接端口部分儿童手表还要先把屏幕上的校验码换算成实际口令。安装第三方表盘、抓系统日志、做ROM回归测试这些活的大半时间其实耗在环境准备和授权确认上真正执行命令只占一小部分。这个zip把ADB运行环境、动态口令换算、常用脚本集中在同一个压缩包里解压即可用省掉重复配环境的成本。适合做穿戴设备测试、系统级调试和售后维修的人新手跟着命令走也能在十几分钟内把手表连上电脑。2. 跑通手表ADB连接链路环境检查、端口配对与adb unauthorized复位2.1 解压后先过一遍ADB环境版本、路径与5037端口工具箱zip解压后一般能看到adb、fastboot、驱动目录和几个bat/sh脚本。第一步先把解压目录加进当前会话的PATH再查ADB版本避免调用了系统中另一套老版本platform-tools。cd /d C:\tools\watch_adb set PATH%CD%;%PATH% adb version rem 输出类似 Android Debug Bridge version 1.0.41版本检查的意义在于Android 11之后手表上出现无线调试adb pair这个子命令是随新版platform-tools加入的。如果adb version能跑通但找不到pair命令说明机器上的ADB太老直接以zip里自带的为准。Windows下注意解压路径不要带空格和中文否则后面批处理脚本循环读列表时容易断。多套ADB环境同时存在时最容易踩到5037端口被占用。启动服务端前可以顺手确认端口归属。netstat -ano | findstr 5037 adb kill-server adb start-serveradb start-server只管拉起本机服务端如果5037已经被别的工具占用ADB会报cannot connect to daemon。常见冲突源是刷机工具、手机助手或另一份platform-tools把占用进程结束再重试即可。手表走USB线时如果设备管理器里看到Android Composite ADB Interface说明驱动正常若出现黄色感叹号在zip的驱动目录里手动指定一次。2.2 手表端开关差异Wear OS、儿童手表与校验码计算手表开启开发者模式的位置比手机藏得深。常见Wear OS路径是设置-系统-关于-版本号连续点按7次之后回到设置-开发者选项打开ADB调试。部分定制ROM默认已打开adb但必须把手表放回充电底座才能识别到USB设备接口。这里的坑在于有些手表没有弹出授权弹窗命令执行后一直停在waiting for device先确认底座触点接触正常。儿童手表是另一套逻辑小天才这类产品的开发者选项里显示的是一串校验码不能直接当作ADB密码。工具箱里通常会带一个校验码计算器或网页入口把手表屏幕上显示的原始数字原样填进去换算出来的才是配对阶段要用的口令。换算前必须先确认电脑和手表时间基本一致误差超过一两分钟计算结果经常在验证时失效。这类机制属于官方调试流程工具只是把换算步骤本地化了不需要设备root。2.3 无线调试为什么需要两个端口adb pair与adb connectAndroid 11开始手表无线调试界面里有两个端口配对端口和连接端口。配对端口显示在配对码旁边连接端口显示在IP地址后面。这个区分是多数人第一次连接失败的直接原因。adb pair 192.168.100.23:39123 # 输入手表屏幕上的六位配对码看到 Successfully paired adb connect 192.168.100.23:43863 adb devicesadb pair只在建立信任关系时使用输入的也是临时配对码adb connect用的是另一个连接端口。如果把connect的端口写成配对端口会得到failed to authenticate。配对完成后手表端会把这台电脑的RSA公钥记录下来后续只需要connect即可。Wear OS 2.x没有无线调试功能走的还是传统5555端口这种情况下只执行adb connect 192.168.100.23:5555就够了。连接成功后建议在路由器里给手表做DHCP地址绑定或直接在手表端设置静态IP。手表的IP一旦漂移脚本里所有连接都会失效排查起来比命令本身麻烦。2.4 adb unauthorized删密钥、重启server、重新授权unauthorized是手表调试里出现频率最高的报错。常见原因有三种手表弹窗没点确认、点过拒绝、电脑ADB公钥和手表端记录不一致。工具箱里通常附带一键复位脚本核心操作就是删掉本机ADB密钥后重建身份。adb kill-server rm -f $HOME/.android/adbkey $HOME/.android/adbkey.pub adb start-server adb connect 192.168.100.23:43863Windows下对应路径是C:\Users\用户名\.android\adbkey删除adbkey和adbkey.pub两个文件。每台电脑首次连接时都会生成一对RSA密钥删除后手表端会认为这是一台新设备再次弹出授权确认框。如果删除后仍然unauthorized进手表的开发者选项执行“撤销USB调试授权”然后重新走一遍adb pair。某些ROM在撤销授权后会隐藏开发者选项入口需要重新点版本号激活。这个动作和手机一致只是手表屏幕小弹窗容易误触授权时尽量把手表放在视线范围内。3. 手表场景的ADB常用命令安装参数、亮度强制与截屏取数3.1 用adb shell getprop和wm命令做一台手表的快照连接成功后先用一组只读命令确认当前设备型号、系统版本和屏幕特性。这些参数影响后续所有命令的选择比如Android 11以下的手表没有无线调试、屏幕density决定应用布局密度。adb shell getprop ro.product.model adb shell getprop ro.build.version.release adb shell wm size adb shell wm density adb shell settings get system screen_brightnessgetprop读取的是系统属性ro.开头的是只读属性由ROM刷写时确定wm size显示当前分辨率wm density显示逻辑密度。部分定制ROM对手表做了圆形屏适配density值会明显高于手机。后面安装应用时如果界面图标偏大或文字被裁切就需要结合这两项调整。settings get system screen_brightness读的是当前亮度值范围0-255这个值在后面做亮度强制时会用到。3.2 adb install五个参数-r、-d、-t、--user 0与签名校验手表端安装APK比手机更容易遇到空间不足和签名冲突。工具箱里的安装命令一般会预设几个参数目标是尽量减少安装失败后的重试次数。adb install -r -t watch.apk adb install -r -d --user 0 system_update.apk-r覆盖安装并保留数据适合升级版本时使用-t允许安装testOnly标记的测试包自动化测试场景常用-d允许版本降级从新版本回退到旧包时必加。--user 0指定安装到系统主用户部分多用户ROM不加这个参数会装到当前用户空间导致切换用户后应用消失。这里的关键是-r和-d可以同时使用但无法绕过签名校验。如果报INSTALL_FAILED_UPDATE_INCOMPATIBLE说明新包和已有包签名不一致只能先卸载再安装代价是数据清空。安装参数的选择可以参考下表参数作用适用场景-r覆盖安装保留应用数据版本升级、重新部署-d允许版本降级从新版本回退到稳定旧版-t允许安装testOnly包自动化测试、内部体验包--user 0安装到系统主用户多用户ROM的默认安装目标不加参数常规安装签名和版本严格校验首次安装普通APK需要卸载系统内置应用时adb uninstall -k --user 0比直接卸载更稳妥-k保留数据--user 0只在当前用户维度隐藏恢复出厂设置后系统应用仍会回来。3.3 亮度强制、adb键盘输入与通知使用权授权手表调试经常要模拟低亮度场景或夜间测试但自动亮度感应在表盘翻转时会被手掌遮盖亮度值跳来跳去。强制固定亮度的命令如下adb shell settings put system screen_brightness_mode 0 adb shell settings put system screen_brightness 1第一行把亮度模式切到手动第二行把亮度压到1。这里有两个细节screen_brightness_mode的0和1分别对应手动和自动先关自动再设数值才生效OLED表盘在亮度1下基本黑屏实际测试建议从10开始逐步往下调避免误判为死机。settings put的写入是即时生效的不需要重启。手表上没有实体键盘在搜索框或表单里输入文字是个长期痛点。常见的工具箱方案是往手表里安装一个ADB Keyboard输入法然后通过广播把文本交给它adb shell am broadcast -a ADB_INPUT_TEXT --es msg hello watch广播发出后输入法会把msg内容直接灌注到当前焦点输入框。输入中文时部分版本要求先把文本做Base64编码再走ADB_INPUT_TEXT_B64通道。如果广播没有反应先检查ADB Keyboard是否已被设为当前输入法再确认焦点是否停在输入框内。通知使用权在手表上比手机更难管配套手机App不在身边时通过adb直接授权是最快的路径adb shell appops set com.example.watch POST_NOTIFICATION allow adb shell cmd notification allow_listener com.example.watch/com.example.watch.NotificationService第一条适用于Android 13之后的通知权限第二条用于授予NotificationListenerService监听权限。注意第二条的组件名必须在APK的AndroidManifest里声明过否则会报Service not found。部分工具包会把一串授权脚本写成sh文件推到手表里执行常见做法是adb shell sh /storage/emulated/0/android/data/包名/up.sh。Android 11之后应用沙箱收紧执行前先确认包名对应目录存在否则脚本会因为找不到路径静默失败。3.4 截屏录屏的adb命令与Windows下的PNG陷阱取证和回归测试时截屏录屏是最基础的操作。直接执行adb shell screencap -p watch.png在Windows下会得到一个损坏的PNG文件原因是ADB把\n转成了\r\n。正确写法是走exec-outadb exec-out screencap -p watch.png adb shell screenrecord --time-limit 10 --bit-rate 2M /sdcard/demo.mp4 adb pull /sdcard/demo.mp4 ./exec-out按二进制流原样输出不会做换行符转换这是Windows环境下的标准姿势。screenrecord的--time-limit控制录制时长默认180秒--bit-rate控制码率2M在手表这种720x720屏幕上足够清晰。screenrecord不录声音需要音频得另走screencap加系统录屏API的组合但手表场景一般用不到。4. 用adb logcat抓取手表日志按offline/unauthorized顺序排错4.1 先清logcat缓存再抓取过滤级别、进程PID与落盘文件抓日志的第一步是清空缓存否则环形缓冲区里残留的是几小时前的旧日志过滤时干扰很大。adb logcat -c adb logcat -v threadtime *:E wear_error.log adb logcat --pid$(adb shell pidof -s com.example.watch) -v threadtime watch.log-c清空所有缓冲在抓取动作前先执行一次-v threadtime输出包含线程ID和时间戳的完整行是问题定位的默认格式。*:E表示只看Error及以上级别注意这里的星号在bash里会被当前目录文件名展开必须加引号。按进程过滤时pidof -s取主进程PID--pid配合-v threadtime能保持日志格式可读。Windows cmd不支持$(...)这种写法需要先单独执行adb shell pidof -s com.example.watch把返回的PID手工填进下一行或者直接用PowerShell。抓取结束后用adb pull把日志文件拉回电脑不要直接在终端里翻长日志手表屏幕小终端翻页效率更低。日志文件名改成wear_error_日期.log这类格式便于和上一轮的抓取结果做diff。4.2 长时间抓日志的循环脚本与设备端写入adb logcat -f可以直接把日志写到设备端文件比在电脑端重定向省心因为不占用ADB通道。adb shell logcat -v threadtime -f /sdcard/watch.log /dev/null 21 # 复现问题操作比如启动应用、切换表盘 adb pull /sdcard/watch.log ./ adb shell kill $(adb shell pidof logcat)-f指定设备端文件路径末尾的把logcat放到后台/dev/null 21丢弃标准输出避免刷屏。复现完问题后先pull再kill保证日志完整落盘。长时间抓取时日志文件会持续膨胀建议每小时拉取一次并重命名避免单文件过大。设备端写满后logcat会停止写入此时pull出来的文件末尾处可以看到截断痕迹。如果遇到logcat进程悄悄退出先检查设备存储空间adb shell df /sdcard剩余空间不足时logcat不会报错只是停止落盘。这是最隐蔽的失败点。4.3 adb connect掉线、offline与timeout的排查顺序多设备调测时offline和unauthorized会把整条脚本卡住。按下面这个顺序排查大部分问题能在五分钟内定位现象常见原因处理方式offline手表端授权弹窗未确认或USB供电不稳点亮表盘确认弹窗物理重插充电底座unauthorized电脑ADB密钥与手表记录不匹配删本机adbkey后重启server重新授权connect timeout手表和电脑不在同一局域网ping手表IP检查手机热点隔离或AP隔离pair failed配对端口写成连接端口核对无线调试界面两个端口数值offline在手表中比手机更常见因为手表充电底座触点是磁吸式接触不良导致的闪断会在几秒内把设备踢回offline状态。先看adb devices -l输出设备状态列会显示device或offline。处理顺序是确认弹窗、重新插拔、adb reconnect offline。如果还是offline重启一次ADB server手表的调试连接本身恢复得很快。4.4 多台手表并行调度的ADB server管理同时调测多台手表时adb devices -l会列出全部设备但普通命令不指定设备会报more than one device。批量操作必须带-s参数adb kill-server adb start-server adb connect 192.168.100.23:43863 adb connect 192.168.100.24:5555 adb devices -l for serial in $(adb devices | awk /device$/{print $1}); do echo $serial adb -s $serial shell getprop ro.product.model doneadb devices输出的第一行是表头awk正则只匹配状态为device的行offline状态的设备进不了循环。-s后面跟的是序列号无线连接设备的序列号就是IP:端口。多台设备共用一个ADB server时任何一台断线都不影响其他设备但如果执行了adb kill-server所有连接都会断开循环脚本里要保持connect动作的幂等性。5. 把工具箱做成可重复跑的ADB盘点脚本批量连接与日志归档5.1 设备名单驱动的批量连接与信息汇总脚本工具箱用顺手之后手边会积累一批待测手表。把设备IP和端口写进名单用脚本批量连接并输出盘点信息比挨个敲命令高效得多。#!/usr/bin/env bash # devices.txt 每行一个设备192.168.100.23:43863 set -u while IFS: read -r ip port; do adb connect $ip:$port /dev/null 21 done devices.txt sleep 1 for serial in $(adb devices | awk /device$/{print $1}); do model$(adb -s $serial shell getprop ro.product.model | tr -d \r) release$(adb -s $serial shell getprop ro.build.version.release | tr -d \r) printf %-20s %-14s %s\n $serial $model $release doneIFS:把每一行拆成IP和端口两个变量connect失败也不中断循环。tr -d \r删掉设备端输出的回车符否则Windows和Linux混用环境里对比字符串时会莫名失败。这个脚本跑完后每台设备的序列号、型号、系统版本都在终端里可以直接复制成后续操作的清单。5.2 日志按设备序列号和日期归档日志归档的命名规则直接影响排查效率。设备断连后线上日志往往需要保留到售后分析按日期和设备号归档是最不容易混的方式。stamp$(date %Y%m%d-%H%M%S) for serial in $(adb devices | awk /device$/{print $1}); do adb -s $serial logcat -d -v threadtime log-${serial}-${stamp}.txt done-d让logcat输出当前缓冲内容后立即退出不做持续监听适合定时快照。文件名把序列号和日期拼在一起即使同一天抓了多轮靠时间戳也能区分顺序。这台设备的系统版本和工作状态我在盘点脚本里会同时写进一个result.tsv方便后续做版本回归对比。5.3 动态口令换算前先校对手表时间动态口令计算是连接链路里最不容易自查的一环。手表和电脑时间偏差一旦超过一分钟计算出的口令大概率验证失败。工具箱脚本入口会自动执行一次adb shell date对比电脑时间这个动作被很多人省略等到口令验证失败再回头对时间白白浪费十几分钟。我会把校时逻辑放在脚本第一行每次连接前先看时间差超过10秒就先同步adb shell date $(date %m%d%H%M%Y.%S)。手表多数时候通过蓝牙基站自动校时但只要离线一天就会出现偏移。把校时前置到连接流程里后续的配对、安装、日志抓取都会稳定很多。本文还有配套的精品资源点击获取
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。