1. 为什么我彻底放弃了USB线调试Android TV1.1 一根线引发的血案先说说我是怎么被逼上无线调试这条路的。去年帮朋友折腾一台老款创维电视盒子机器挂在客厅墙上USB口在背面贴墙那一侧手伸进去都费劲更别说插拔数据线了。每次改一个参数、抓一次日志都得把电视从墙上摘下来插上线调完再挂回去。折腾了三个来回我直接放弃了——这活儿没法干。后来我开始认真研究ADB无线调试。说实话早几年Android TV的无线调试体验很一般要么需要root要么需要特定的ROM支持要么配对流程极其反人类。但2023年之后随着Android 11及以上版本对无线调试的原生支持逐步完善加上各种第三方工具的成熟现在给Android TV做无线调试已经非常顺畅了。这篇文章要聊的就是我实际用过的三种无线调试方案覆盖不同系统版本、不同品牌、不同使用场景。不管你是开发者要抓logcat、做自动化测试还是普通用户想精简预装应用、改改系统设置都能找到适合自己的路子。1.2 三种方案怎么选先看这张表在展开之前先给一个快速决策表你可以根据自己的设备情况直接对号入座方案适用系统版本是否需要首次USB连接是否需要同一Wi-Fi稳定性操作难度原生无线调试配对Android 11否是高低ADB over TCP传统方式Android 4.0是仅首次是高中Wi-Fi Direct/蓝牙辅助Android 8.0否否直连中中高这张表是我自己踩坑之后总结的具体每个方案怎么操作、有什么坑下面逐个展开。2. 方案一Android 11原生无线调试配对2.1 这个方案到底解决了什么问题Android 11引入了一个叫“无线调试”的功能藏在开发者选项里。它的核心价值在于完全不需要USB线连首次配对都不需要。你只需要电视和电脑在同一个局域网里通过一个六位数的配对码就能建立连接。这个方案解决的最大痛点是很多Android TV设备的USB口位置极其反人类或者干脆只有Micro USB口而手头没有对应线材。另外有些电视盒子在挂装之后USB口被完全遮挡物理连接根本不可能。我实测下来这个方案在Android 11及以上的设备上成功率最高包括大部分2021年之后上市的电视盒子、部分智能电视原生系统、以及NVIDIA Shield TV系统更新到Android 11之后。2.2 具体操作步骤第一步确认系统版本先确认你的Android TV系统版本。进入“设置 → 关于 → 系统版本”如果显示Android 11或更高这个方案就适用。如果是Android 10及以下直接跳到方案二。第二步打开开发者选项和无线调试进入“设置 → 关于”找到“版本号”或“构建号”连续点击7次直到提示“您已进入开发者模式”。然后返回设置主菜单进入“系统 → 开发者选项”找到“无线调试”并打开。这里有个细节要注意部分电视厂商会把“开发者选项”藏在很深的位置比如创维的部分机型需要在“关于 → 版本信息”里连续点击“内核版本”而不是“版本号”。如果点“版本号”没反应试试点“内核版本”或者“构建号”。第三步获取配对码打开“无线调试”之后你会看到两个选项“使用配对码配对设备”和“使用二维码配对设备”。选第一个系统会弹出一个六位数的配对码以及一个IP地址和端口号。这个配对码有时效性一般是几分钟内有效过期了重新生成就行。注意配对码界面不要关掉配对过程中需要保持这个界面可见。部分设备在配对码界面超时后会自动关闭无线调试需要重新打开。第四步电脑端执行配对在电脑上打开终端Windows用CMD或PowerShellMac/Linux用Terminal确保adb工具已经安装并添加到环境变量。如果还没装去Android开发者官网下载platform-tools包解压后把路径加到系统环境变量里。然后执行adb pair 192.168.1.100:37000这里的IP和端口换成你电视上显示的。回车之后系统会提示你输入配对码输入那六位数字回车。如果成功会显示“Successfully paired to 192.168.1.100:37000”。第五步连接设备配对成功之后还需要执行一次连接命令。注意连接用的端口和配对用的端口不一样。回到电视的无线调试界面你会看到“IP地址和端口”那一栏显示的是另一个端口号通常是5555或者随机高端口。执行adb connect 192.168.1.100:5555如果显示“connected to 192.168.1.100:5555”就说明连接成功了。之后你就可以正常使用adb命令了。2.3 实操心得与避坑指南这个方案我用了大半年踩过的坑主要集中在几个地方坑一配对码输入后提示“无法配对”这种情况大概率是电脑和电视不在同一个网段。比如电视连的是5G频段的Wi-Fi电脑连的是2.4G频段虽然SSID一样但部分路由器会做AP隔离导致设备之间无法互相访问。解决办法是登录路由器后台关闭“AP隔离”或“客户端隔离”功能。坑二配对成功但连接失败配对和连接用的是不同的端口这个前面已经说了。但还有一种情况是配对成功后电视的无线调试界面刷新了端口号变了。所以配对成功后一定要重新看一眼电视上显示的端口号用最新的端口去连接。坑三重启后失效Android TV的无线调试在设备重启后不会自动开启需要手动去开发者选项里重新打开。而且重新打开之后配对信息也会丢失需要重新配对。这是系统设计如此没有太好的解决办法。我的做法是如果需要频繁调试就暂时不关电视或者用方案二。坑四部分国产ROM阉割了无线调试一些国产电视品牌虽然系统版本是Android 11但开发者选项里根本没有“无线调试”这一项。这种情况只能走方案二。我遇到过创维的部分机型、以及一些低价盒子品牌有这个问题。3. 方案二ADB over TCP传统方式3.1 原理和适用场景这个方案是ADB无线调试的“老牌”方式原理很简单ADB守护进程本身支持通过TCP/IP协议通信只需要先用USB线连接一次执行一条命令让ADB在TCP端口上监听之后就可以拔掉USB线通过Wi-Fi连接了。这个方案的优势是兼容性极好从Android 4.0到Android 14都支持。缺点是首次需要USB线而且部分设备在重启后需要重新执行监听命令。适用场景Android 10及以下的设备、国产ROM阉割了原生无线调试的设备、以及需要长期稳定调试连接的场景。3.2 完整操作流程第一步USB连接并确认设备识别用USB线把电视和电脑连起来。注意很多Android TV的USB口是USB 2.0的传输速度一般但调试够用了。连接后在电脑上执行adb devices如果看到设备列表里有一串序列号加上“device”字样说明识别成功。如果显示“unauthorized”需要在电视上弹出的授权对话框里点“允许”。如果电视上没有弹出对话框去开发者选项里找到“USB调试授权”或者“撤销USB调试授权”撤销后重新连接。第二步开启TCP监听执行adb tcpip 5555这条命令的意思是让ADB守护进程在5555端口上监听TCP连接。5555是默认端口你也可以改成其他端口比如5556、6666等只要不冲突就行。执行成功后会显示“restarting in TCP mode port: 5555”。第三步查看电视IP地址在电视上进入“设置 → 网络 → 当前连接的网络”查看IP地址。或者直接在电脑上执行adb shell ip addr show wlan0在输出里找“inet”后面的IP地址。第四步拔掉USB线无线连接现在可以拔掉USB线了。执行adb connect 192.168.1.100:5555如果显示“connected to 192.168.1.100:5555”就成功了。之后所有adb命令都可以正常使用。3.3 参数选择与稳定性优化关于端口选择5555是默认端口但有些设备或网络环境可能会占用这个端口。如果连接失败可以试试换成其他端口比如adb tcpip 5556 adb connect 192.168.1.100:5556关于稳定性ADB over TCP在Wi-Fi信号良好的情况下非常稳定我连续跑过几个小时的logcat抓取没有断连。但如果Wi-Fi信号弱或者路由器负载高可能会出现断连。解决办法是尽量让电视和电脑连接同一个5G频段的Wi-Fi减少干扰。另外部分设备在重启后会丢失TCP监听设置需要重新用USB线执行一次adb tcpip 5555。如果你需要设备重启后自动开启TCP监听可以在电视上安装一个终端模拟器应用在开机脚本里执行setprop service.adb.tcp.port 5555和stop adbd; start adbd。不过这个操作需要root权限普通用户可能搞不定。3.4 常见问题排查问题adb connect提示“connection refused”这说明电视上的ADB守护进程没有在监听TCP端口。原因可能是没有执行adb tcpip 5555或者执行后设备重启了。解决办法是重新用USB线连接再执行一次。问题adb devices显示“offline”这种情况通常是ADB版本不匹配导致的。电脑上的adb版本和电视上的adbd版本差异太大时会出现这个问题。解决办法是更新电脑上的platform-tools到最新版。如果还是不行试试重启电视上的adbdadb kill-server adb start-server adb connect 192.168.1.100:5555问题连接成功但执行命令无响应可能是电视上的ADB授权过期了。去开发者选项里撤销USB调试授权然后重新连接电视上会弹出授权对话框点允许。4. 方案三Wi-Fi Direct与蓝牙辅助调试4.1 什么情况下需要这个方案前两个方案都有一个前提电视和电脑必须在同一个局域网里。但有些场景下这个前提不成立。比如电视连的是有线网络电脑连的是另一个网段的Wi-Fi路由器做了严格的客户端隔离设备之间无法互相访问你在外面出差需要远程调试家里的电视这个场景比较极端但确实有Wi-Fi Direct方案的核心思路是让电视和电脑直接建立点对点连接不经过路由器。蓝牙辅助则是利用蓝牙通道传输调试指令适合对带宽要求不高的场景。需要说明的是这两个方案在Android TV上的支持程度参差不齐不是所有设备都支持。我实测下来NVIDIA Shield TV和小米电视的部分型号对Wi-Fi Direct支持较好其他品牌可能需要额外折腾。4.2 Wi-Fi Direct连接实操第一步确认设备支持进入电视的“设置 → 网络 → Wi-Fi Direct”如果能找到这个选项说明设备支持。如果没有这个方案就不适用。第二步电脑端建立连接Windows系统下打开“设置 → 网络和Internet → Wi-Fi”找到“Wi-Fi Direct”或者“移动热点”选项。不同Windows版本的位置不太一样Windows 10在“网络和共享中心”里Windows 11在“高级网络设置”里。Mac系统对Wi-Fi Direct的支持比较有限需要通过第三方工具或者命令行工具来实现。我一般用airport命令来扫描和连接airport -s找到电视的Wi-Fi Direct信号后用networksetup命令连接。第三步获取IP并连接ADBWi-Fi Direct连接建立后电视会分配一个IP地址给电脑通常是192.168.49.x网段。在电视上查看Wi-Fi Direct的IP地址然后执行adb connect 192.168.49.1:5555注意Wi-Fi Direct模式下ADB的TCP监听需要提前开启。如果之前没有用USB线执行过adb tcpip 5555这个方案用不了。所以Wi-Fi Direct方案通常需要配合方案二一起使用。4.3 蓝牙调试的可行性与限制蓝牙调试在Android TV上是一个比较小众的方案。原理是通过蓝牙SPP串口协议或者BLE来传输ADB指令。但ADB协议本身对带宽有一定要求蓝牙的传输速率有限所以这个方案只适合执行简单的命令比如查看设备信息、发送按键事件等。抓logcat或者传输文件就不太现实了。我试过用“小牛蓝牙调试助手”这类工具来做蓝牙调试体验一般。连接稳定性不如Wi-Fi而且延迟明显。如果你只是偶尔需要执行一两条命令可以试试如果需要频繁调试还是老老实实用Wi-Fi方案。提示蓝牙调试在部分设备上需要root权限才能开启ADB over Bluetooth功能。普通用户建议优先考虑前两个方案。5. 无线调试常用命令与实战技巧5.1 连接管理命令速查无线调试连接建立之后日常使用和USB调试没有区别。这里整理几个高频命令# 查看已连接设备 adb devices # 断开指定设备 adb disconnect 192.168.1.100:5555 # 重启ADB服务 adb kill-server adb start-server # 查看设备信息 adb shell getprop ro.product.model adb shell getprop ro.build.version.release # 截图并保存到电脑 adb exec-out screencap -p screenshot.png # 抓取logcat日志 adb logcat -v time logcat.txt # 安装应用 adb install app.apk # 卸载应用保留数据 adb uninstall -k com.example.app # 冻结应用需要root或设备管理员权限 adb shell pm disable-user com.example.app5.2 几个实战场景场景一精简电视预装应用国产电视盒子通常预装了大量用不上的应用占内存还拖慢系统。用ADB可以禁用这些应用# 列出所有已安装包 adb shell pm list packages # 禁用指定包 adb shell pm disable-user --user 0 com.example.bloatware注意禁用系统关键应用可能导致电视无法正常启动操作前一定要确认包名对应的应用是什么。不确定的话先用adb shell pm list packages -s列出系统应用然后逐个确认。场景二修改系统设置有些设置项在电视的UI里找不到但可以通过ADB直接修改# 关闭USB充电部分设备有效 adb shell dumpsys battery set usb 0 # 禁用锁屏 adb shell locksettings set-disabled true # 修改屏幕分辨率需要root adb shell wm size 1920x1080场景三自动化测试如果你在做Android TV应用开发可以用ADB做UI自动化# 导出UI层级 adb shell uiautomator dump /sdcard/ui.xml adb pull /sdcard/ui.xml # 模拟按键 adb shell input keyevent KEYCODE_DPAD_DOWN adb shell input keyevent KEYCODE_ENTERuiautomator dump在部分设备上可能用不了报错“ERROR: could not get idle state”。解决办法是加--compressed参数或者先执行adb shell settings put global window_animation_scale 0关闭动画。5.3 无线调试的稳定性维护无线调试用久了难免遇到断连、卡顿的问题。我总结了几条维护经验第一尽量让电视和电脑连接同一个5G频段的Wi-Fi。2.4G频段干扰多延迟高抓logcat的时候容易丢数据。第二定期重启ADB服务。长时间运行后ADB守护进程可能会内存泄漏导致响应变慢。执行adb kill-server adb start-server可以清理。第三如果电视长时间待机后无法连接去开发者选项里关掉再重新打开无线调试。部分设备的无线调试在待机后会进入省电模式导致连接失效。第四给电视设置静态IP。DHCP分配的IP地址可能会变导致之前的连接配置失效。在路由器里给电视绑定一个固定的IP地址省去每次查IP的麻烦。6. 常见问题与排查技巧实录6.1 连接类问题速查表问题现象可能原因解决办法adb devices无输出ADB服务未启动执行adb start-server显示unauthorized未授权电脑电视上点允许或撤销授权后重连connection refusedTCP监听未开启USB连接后执行adb tcpip 5555连接成功但命令无响应授权过期撤销USB调试授权后重连配对码输入后失败不在同一网段检查路由器AP隔离设置重启后连接失效无线调试未自动开启重新打开无线调试并配对传输文件速度慢Wi-Fi信号弱切换5G频段或靠近路由器6.2 几个容易被忽略的细节关于adb unauthorized这个问题在新设备上特别常见。电视上弹出的授权对话框有时候会被其他窗口遮挡导致你根本没看到。解决办法是去开发者选项里找到“USB调试授权”或“撤销USB调试授权”点一下然后重新连接对话框会重新弹出。如果电视上死活不弹授权框可以试试删除电脑上的ADB密钥文件强制重新授权# Windows del %USERPROFILE%\.android\adbkey del %USERPROFILE%\.android\adbkey.pub # Mac/Linux rm ~/.android/adbkey rm ~/.android/adbkey.pub然后执行adb kill-server adb start-server重新连接。关于Windows 10找不到adb这个问题我遇到过好几次。明明已经把platform-tools路径加到环境变量了但在CMD里执行adb还是提示“不是内部或外部命令”。原因通常是环境变量加错了位置或者加了之后没有重启CMD。正确的做法是把platform-tools的完整路径加到“系统变量”里的“Path”中而不是“用户变量”。加完之后一定要关掉所有CMD窗口重新打开环境变量才会生效。如果还是不行直接在platform-tools目录下打开CMD用.\adb来执行。或者把adb.exe复制到C:\Windows\System32目录下一劳永逸。关于vivo手机的无线调试配对码虽然这篇文章主要讲Android TV但热词里提到了vivo手机的无线调试。顺便说一句vivo手机的无线调试配对码在“开发者选项 → 无线调试 → 使用配对码配对设备”里和Android TV的逻辑一样。不过vivo的部分机型需要先登录vivo账号才能开启开发者选项这个比较烦人。6.3 我的独家避坑经验第一条操作前先备份。禁用系统应用之前一定要确认包名。我见过有人把系统Launcher禁用了结果电视开机后黑屏只能恢复出厂设置。不确定的包名先去网上搜一下或者用adb shell pm dump com.example.app | grep -i label查看应用名称。第二条无线调试的端口不要用默认的5555。虽然5555是标准端口但有些路由器或安全软件会拦截这个端口。改成5556、6666、7777之类的成功率更高。第三条如果电视和电脑之间隔了一堵墙Wi-Fi信号衰减严重无线调试会非常不稳定。这种情况下可以考虑用电力猫或者Mesh路由器来扩展网络覆盖。实在不行还是老老实实插USB线吧。第四条抓logcat的时候加上-v threadtime参数这样输出的日志会包含线程ID和时间戳排查问题时更有用adb logcat -v threadtime logcat.txt如果日志量太大可以用-s参数过滤特定标签adb logcat -s ActivityManager WindowManager第五条adb shell uiautomator dump在Android TV上经常失败原因是电视的UI渲染和手机不一样uiautomator有时候抓不到完整的层级。替代方案是用adb shell dumpsys window来查看当前窗口信息或者用adb shell dumpsys activity查看Activity栈。7. 三种方案的实际体验对比7.1 连接速度与稳定性实测我在同一台NVIDIA Shield TVAndroid 11和一台创维盒子Android 9上分别测试了三种方案结果如下指标原生无线调试ADB over TCPWi-Fi Direct首次连接耗时约30秒约1分钟含USB操作约2分钟重启后恢复需重新配对需重新执行tcpip需重新建立直连连续运行稳定性高高中传输速度取决于Wi-Fi取决于Wi-Fi较慢兼容性Android 11Android 4.0部分设备从实测结果看原生无线调试在连接速度和便利性上优势明显但兼容性受限。ADB over TCP虽然首次需要USB线但胜在稳定和通用。Wi-Fi Direct适合特殊场景日常使用不太推荐。7.2 不同品牌设备的适配情况根据我的经验各品牌对无线调试的支持情况差异很大NVIDIA Shield TV三种方案都支持原生无线调试体验最好小米电视/盒子Android 11机型支持原生无线调试老机型用ADB over TCP创维电视部分机型阉割了无线调试选项只能用ADB over TCP索尼电视原生支持较好但部分机型需要开启“远程调试”选项天猫魔盒系统限制较多ADB over TCP需要先开启“开发者模式”如果你手头的设备不在上面这个列表里最简单的判断方法是去开发者选项里找“无线调试”有就用方案一没有就用方案二。7.3 长期使用的建议如果你需要长期、频繁地对Android TV进行调试我的建议是优先用方案二ADB over TCP虽然首次需要USB线但后续使用最稳定。配合静态IP和开机自启脚本可以做到几乎无感连接。如果设备支持方案一原生无线调试可以作为备选。在需要快速连接、手头没有USB线的时候用。方案三Wi-Fi Direct只在特殊场景下使用比如网络环境受限、无法走局域网的情况。另外不管你用哪个方案都建议在电脑上写一个简单的连接脚本把IP地址、端口、连接命令封装起来一键执行。比如Windows下可以写一个connect_tv.batecho off adb connect 192.168.1.100:5555 adb devices pauseMac/Linux下写一个connect_tv.sh#!/bin/bash adb connect 192.168.1.100:5555 adb devices这样每次调试的时候双击一下脚本就行了省去手动输入命令的麻烦。最后再分享一个小技巧如果你有多台Android TV设备需要调试可以在ADB命令里用-s参数指定设备序列号避免命令发错设备adb -s 192.168.1.100:5555 shell getprop ro.product.model adb -s 192.168.1.101:5555 shell getprop ro.product.model这个在批量管理多台设备的时候特别有用。