☰
告别USB线:Android TV无线ADB调试三种方法详解
2026/9/28 1:56:34 网站建设 项目流程

1. 为什么我彻底放弃了USB线调试Android TV

1.1 从一根线引发的折腾说起

如果你跟我一样,家里客厅摆着一台Android TV或者运营商送的机顶盒,平时喜欢装点第三方应用、精简一下系统预装、或者抓个日志看看某个App为什么闪退,那你一定经历过这样的场景:电视挂在墙上,USB口在背面,手伸进去盲插半天对不准,好不容易插上了,稍微碰一下线就松了,adb devices一刷新,设备没了。更别提有些电视的USB口供电不足,插上电脑根本识别不到,还得外接一个带供电的USB Hub。

我最早接触ADB调试是在手机上,那时候用USB线连着电脑,adb install、adb shell、adb logcat,一套流程很顺。但换到Android TV上,这套逻辑就变得特别别扭。电视不像手机放在手边,它固定在墙上或者电视柜上,每次调试都要钻到电视后面去插线,调试完还要拔线,反复几次之后我就开始琢磨:能不能彻底摆脱这根线?

答案是肯定的,而且方法不止一种。2023年之后,Android TV系统对无线调试的支持越来越完善,尤其是Android 11及以上版本,原生就带了无线调试配对功能。即便是老款的Android TV 9或者更早的版本,也有变通方案。我前后在五六台不同品牌的电视和机顶盒上试过,包括小米电视、索尼、TCL、创维、以及几款运营商定制盒子,踩了不少坑,也总结出了一套比较稳的流程。

这篇文章就是把我这些年折腾无线调试的经验完整梳理出来,重点讲三种方法:Wi-Fi局域网调试、Wi-Fi Direct直连调试、以及蓝牙调试辅助方案。每种方法适合什么场景、怎么操作、有哪些坑,我都会详细说清楚。不管你是刚接触ADB的新手,还是已经用过USB调试想升级到无线,都能从里面找到能直接抄作业的步骤。

1.2 无线调试到底解决了什么问题

先说清楚无线调试的核心价值。ADB本质上是一个客户端-服务端架构的工具,电脑上跑的是ADB客户端,电视上跑的是ADBD守护进程。USB线只是两者之间的一条物理通道,只要电视和电脑在同一个网络里,这条通道完全可以走TCP/IP协议。Android从很早就支持adb tcpip命令,把ADBD切换到网络监听模式,默认端口是5555。

这意味着什么?意味着你只需要电视和电脑连在同一个路由器下,就能像USB调试一样执行所有ADB命令。adb install装应用、adb shell进终端、adb logcat抓日志、adb pull拉文件、adb push推文件,甚至adb shell uiautomator dump做UI自动化,全都能跑。速度方面,如果是5GHz Wi-Fi或者千兆有线网络,传输大文件的速度甚至比USB 2.0还快。

但无线调试也不是没有代价。最大的问题是首次开启需要USB线,因为你要先通过USB执行adb tcpip 5555把ADBD切到网络模式。不过Android 11之后有了无线调试配对功能,连这一步都省了。另外就是网络稳定性,如果路由器信号不好,ADB连接会断断续续,执行长时间命令比如logcat抓取时容易掉线。还有就是安全性,ADB网络端口暴露在局域网里,同一网络下的其他设备理论上也能连上来,所以家里路由器密码别设太简单。

我个人的使用场景主要是三类:一是给电视装第三方应用和精简预装,二是抓取App崩溃日志做分析,三是做一些自动化操作比如定时截图、UI测试。这三类场景对无线调试的需求都很强,尤其是第一类,每次装应用都要钻到电视后面插线,实在受不了。

1.3 三种方法的适用场景对比

在正式展开之前,我先用一张表把三种方法的核心差异列出来,方便你快速判断自己该用哪种。

方法适用系统版本是否需要首次USB网络要求稳定性操作难度
Wi-Fi局域网调试Android 11+ 原生支持,低版本需USB激活Android 11+不需要,低版本需要同一局域网高低
Wi-Fi Direct直连调试Android 4.4+需要无需路由器,点对点中中
蓝牙调试辅助Android 5.0+需要蓝牙配对低高

简单来说,如果你的电视是Android 11及以上,直接用第一种方法,最省事。如果是老电视,第一种方法需要先用USB激活一次,之后就可以无线了。Wi-Fi Direct适合没有路由器或者路由器隔离了设备间通信的场景。蓝牙调试则更多是辅助手段,比如电视没有网络接口、Wi-Fi模块坏了,或者你想在没有网络的环境下做简单调试。

接下来我会逐一拆解这三种方法,从原理到实操,把每个步骤都讲透。

2. 方法一:Wi-Fi局域网调试,最省心的主流方案

2.1 原理拆解:ADB over TCP/IP是怎么跑起来的

Wi-Fi局域网调试的核心原理,就是让电视上的ADBD守护进程从USB模式切换到TCP/IP模式,监听一个网络端口,默认是5555。电脑上的ADB客户端通过adb connect <电视IP>:5555连上去,之后的通信就跟USB调试一模一样了。

这里有个关键点很多人搞不清楚:ADBD在USB模式下和TCP/IP模式下是互斥的。也就是说,当你执行adb tcpip 5555之后,USB调试会断开,ADBD重新以网络模式启动。这时候如果你还想用USB,得执行adb usb切回去。不过在实际使用中,我一般激活一次网络模式后就不再切回去了,除非电视重启。

电视重启后,ADBD会恢复默认的USB模式,网络监听就没了。所以如果你经常重启电视,每次都要重新激活。解决办法有两个:一是用Android 11+的无线调试配对功能,它会在系统层面记住配对信息,重启后依然可用;二是写一个开机自启的脚本,在电视上自动执行setprop service.adb.tcp.port 5555并重启ADBD。第二种方法需要root权限,后面我会详细说。

另外要说明的是,ADB over TCP/IP的通信是没有加密的,所有数据明文传输。在家庭局域网里问题不大,但如果你在办公室或者公共网络环境下,建议还是用USB,或者至少确保网络是可信的。

2.2 Android 11+原生无线调试:不用USB的完整流程

Android 11引入了一个新的无线调试功能,在开发者选项里可以直接开启,不需要USB线。这个功能在Android TV上同样适用,只要电视系统是Android 11及以上。我实测过小米电视Master系列、索尼X90J、以及几款2022年后的TCL电视,都支持。

具体操作步骤如下:

第一步,确认电视系统版本。进入电视的“设置”->“关于”->“系统版本”,确认是Android 11或更高。如果是Android 10及以下,这个原生功能没有,得走后面的USB激活流程。

第二步,开启开发者选项。进入“设置”->“关于”->“版本号”,连续点击7次,直到提示“您已处于开发者模式”。不同品牌电视的入口可能略有差异,小米电视是在“设置”->“关于”->“产品型号”上连点,索尼是在“设置”->“关于”->“版本”上连点。如果找不到,可以在设置里搜索“版本号”。

第三步,进入无线调试。返回“设置”->“系统”->“开发者选项”,找到“无线调试”并开启。开启后,你会看到“使用配对码配对设备”和“IP地址和端口”两个选项。

第四步,在电脑上配对。打开电脑的终端(Windows用CMD或PowerShell,Mac用Terminal),确保ADB版本在30.0.0以上。执行:

adb pair <电视IP>:<配对端口>

电视上会显示一个六位数的配对码,在电脑上输入即可。配对成功后,再执行:

adb connect <电视IP>:<调试端口>

注意,配对端口和调试端口是两个不同的端口,电视上会分别显示。配对端口只在配对时用一次,调试端口是后续连接用的。

第五步,验证连接。执行adb devices,如果看到设备列表里有电视的IP和端口,状态是device,就说明连接成功了。

这里有个坑我要特别提醒:配对码的有效期很短,大概只有一两分钟。如果你在电脑上输入命令慢了,配对码过期了,就得重新在电视上生成。所以建议先把命令敲好,电视上一点“使用配对码配对设备”,立刻在电脑上执行。

还有一个坑是IP地址变化。电视的IP如果是DHCP分配的,路由器重启或者租期到了之后可能会变。解决办法是在路由器里给电视绑定一个静态IP,或者在电视的网络设置里手动配置静态IP。我一般会在路由器后台把电视的MAC地址和IP绑定,这样就不用每次去查IP了。

2.3 低版本Android TV的USB激活法

如果你的电视是Android 10或更低版本,没有原生无线调试功能,那就得先用USB线激活一次。虽然要插一次线,但激活之后就可以拔掉,后续都走无线。

操作流程如下:

第一步,用USB线连接电视和电脑。电视的USB口一般在背面或侧面,找一下标有“USB”或者“Service”的口。有些电视的USB口是USB 3.0,有些是2.0,都能用。如果电脑识别不到,换一个USB口试试,或者换一根线。

第二步,确认ADB能识别到设备。在电脑上执行adb devices,如果看到设备序列号,状态是device,就说明USB调试通了。如果状态是unauthorized,需要在电视上确认USB调试授权弹窗。如果电视上没有弹窗,进入开发者选项,找到“USB调试”确认已开启,然后执行adb kill-server && adb start-server重新连接。

第三步,切换到TCP/IP模式。执行:

adb tcpip 5555

如果成功,会提示restarting in TCP mode port: 5555。这时候USB连接会断开,ADBD切换到网络模式。

第四步,查看电视IP地址。在电视上进入“设置”->“网络”->“当前网络”,查看IP地址。或者在电脑上执行adb shell ip addr show wlan0,找到inet后面的IP。

第五步,无线连接。拔掉USB线,执行:

adb connect <电视IP>:5555

如果提示connected to <电视IP>:5555,就成功了。再执行adb devices确认一下。

这里有个细节:执行adb tcpip 5555之后,如果电视重启了,网络模式就没了,需要重新用USB激活。所以如果你经常重启电视,建议在电视上装一个Terminal App,直接在本机执行setprop service.adb.tcp.port 5555和stop adbd && start adbd,这样就不需要电脑了。不过这个命令需要root权限,没有root的话还是得用USB。

2.4 实操心得:让连接更稳的几个技巧

用了这么久无线调试,我总结了几条让连接更稳定的经验:

第一,优先用5GHz Wi-Fi。2.4GHz频段干扰多,尤其是晚上邻居家的路由器都在工作,ADB连接容易断。5GHz频段干净很多,延迟也低。如果电视支持有线网络,直接插网线最稳,千兆网络下ADB传输速度能到几十MB/s。

第二,给电视绑定静态IP。前面提过,DHCP分配的IP会变,绑定静态IP后就不用每次查IP了。在路由器后台找到DHCP静态分配或者IP-MAC绑定,把电视的MAC地址和IP绑死。

第三,保持ADB版本一致。电脑上的ADB版本太老,可能不支持新的配对协议。建议去Android开发者官网下载最新的platform-tools,解压后把路径加到系统环境变量里。Windows用户如果遇到“找不到adb”的问题,检查一下环境变量Path里有没有platform-tools的路径。

第四,连接断开后先kill-server。有时候adb connect提示连接成功,但adb devices显示offline。这时候执行adb kill-server,再adb start-server,然后重新connect,一般能解决。

第五,长时间抓日志用nohup。如果你要抓logcat抓几个小时,建议在电脑上用nohup adb logcat > log.txt &,这样即使终端关了,日志还在抓。不过要注意电视端的ADB连接可能会断,断了之后logcat就停了,所以最好配合一个断线重连的脚本。

3. 方法二:Wi-Fi Direct直连调试,没有路由器也能玩

3.1 Wi-Fi Direct是什么,为什么能用来调试

Wi-Fi Direct,有时候也叫Wi-Fi P2P,是一种让设备之间直接点对点连接的技术,不需要经过路由器。它的原理是其中一个设备充当Group Owner,相当于一个软AP,另一个设备作为Client连上去,两者之间就形成了一个独立的局域网。

这个技术用在ADB调试上,适合以下几种场景:一是电视没有连路由器,或者路由器设置了AP隔离导致设备之间不能互访;二是你在外面出差,带着电视盒子但没有可用的Wi-Fi网络;三是你想让电脑和电视直连,避免经过路由器带来的延迟。

不过Wi-Fi Direct在Android TV上的支持情况参差不齐。原生Android TV是支持Wi-Fi Direct的,在“设置”->“网络”->“Wi-Fi Direct”里可以找到。但很多电视厂商把这个功能藏起来了,或者干脆阉割了。我实测过的小米电视和索尼电视都有Wi-Fi Direct选项,但创维和部分运营商盒子没有。如果你的电视找不到这个选项,那这个方法就用不了,只能走第一种或第三种。

另外,Wi-Fi Direct连接后,电视的IP地址是Group Owner分配的,通常是192.168.49.x网段。电脑连上之后,需要先确认自己的IP也在同一网段,然后才能adb connect。

3.2 电视端开启Wi-Fi Direct的步骤

假设你的电视支持Wi-Fi Direct,操作流程如下:

第一步,进入Wi-Fi Direct设置。在电视上进入“设置”->“网络”->“Wi-Fi Direct”,有些电视叫“Wi-Fi直连”或者“直连”。如果找不到,可以在设置里搜索“Direct”。

第二步,开启Wi-Fi Direct。打开开关,电视会开始搜索附近的Wi-Fi Direct设备。同时,电视本身也会作为一个可被发现设备,等待其他设备连接。

第三步,在电脑上连接电视的Wi-Fi Direct。这里要注意,Windows和Mac对Wi-Fi Direct的支持不一样。Windows 10/11原生支持Wi-Fi Direct,但需要通过“设置”->“网络和Internet”->“Wi-Fi”->“管理已知网络”->“添加新网络”来手动连接。Mac对Wi-Fi Direct的支持比较弱,一般需要借助第三方工具。

更通用的做法是:在电视上选择“搜索设备”,找到你的电脑(电脑需要先开启Wi-Fi Direct或者创建一个移动热点),然后电视主动连接电脑。这样电脑就充当了Group Owner,电视作为Client连上来。连接成功后,电视会获得一个IP,在电视的网络设置里能看到。

第四步,在电脑上确认网络。如果电脑是Group Owner,它通常会有一个虚拟网卡,IP是192.168.49.1。电视的IP一般是192.168.49.2或类似。在电脑上执行ipconfig(Windows)或ifconfig(Mac/Linux)确认虚拟网卡的IP。

第五步,ADB连接。先用USB激活电视的TCP/IP模式(参考2.3节),然后执行:

adb connect <电视IP>:5555

如果电视之前已经激活过TCP/IP模式,直接connect就行。

3.3 电脑端连接与ADB配对细节

Wi-Fi Direct的ADB配对,最大的坑在于网络隔离。有些电脑的Wi-Fi Direct虚拟网卡和主网卡是隔离的,ADB客户端默认走主网卡,就连不上电视。解决办法是手动指定ADB走哪个网卡,但ADB本身没有这个选项。变通方法是临时禁用主网卡,只保留Wi-Fi Direct虚拟网卡,或者修改路由表。

在Windows上,可以用route add命令添加一条静态路由,让电视IP的流量走Wi-Fi Direct网卡:

route add <电视IP> mask 255.255.255.255 <Wi-Fi Direct网关IP>

在Mac上,可以用route add -host <电视IP> -interface <Wi-Fi Direct接口名>。

另一个坑是防火墙。Windows Defender防火墙可能会拦截ADB的入站连接,导致电视连不上电脑。解决办法是在防火墙里给adb.exe添加一条入站规则,允许TCP 5555端口。或者临时关闭防火墙测试一下,确认是防火墙问题后再加规则。

还有一个细节:Wi-Fi Direct连接后,电视可能会提示“此网络无法访问互联网”,问你是否保持连接。一定要选“保持连接”,否则电视会自动断开Wi-Fi Direct,ADB也就断了。

3.4 适用场景与局限性分析

Wi-Fi Direct调试的优点是不依赖路由器,适合没有网络或者网络受限的环境。但它的局限性也很明显:

首先是兼容性差。不是所有Android TV都支持Wi-Fi Direct,尤其是运营商定制的盒子,很多都阉割了这个功能。而且不同品牌电视的Wi-Fi Direct实现差异很大,有的只能连自家品牌的设备,有的连上后网络不稳定。

其次是速度慢。Wi-Fi Direct的理论速度虽然不低,但实际使用中受干扰影响大,传输大文件时速度可能只有几MB/s,比5GHz Wi-Fi局域网慢不少。

第三是操作复杂。相比第一种方法,Wi-Fi Direct需要额外处理网络路由、防火墙、虚拟网卡等问题,对新手不太友好。

所以我个人的建议是:能用Wi-Fi局域网就用Wi-Fi局域网,Wi-Fi Direct只作为备选方案。除非你确实没有路由器可用,否则没必要折腾Wi-Fi Direct。

4. 方法三:蓝牙调试辅助,特殊场景下的兜底方案

4.1 蓝牙调试能做什么,不能做什么

蓝牙调试在ADB生态里是一个比较边缘的存在。严格来说,ADB本身并不支持直接通过蓝牙传输数据,蓝牙在这里更多是扮演一个辅助通道的角色。它的主要用途有两个:一是在没有网络的情况下,通过蓝牙传输一些简单的命令或文件;二是配合某些第三方工具,实现蓝牙遥控器、蓝牙键盘的调试。

网上有一些工具,比如“小牛蓝牙调试助手”之类的,可以通过蓝牙发送一些AT指令或者自定义协议的数据。但这些工具跟ADB是两回事,它们不能执行adb install、adb shell这些命令。所以如果你指望用蓝牙来替代Wi-Fi做完整的ADB调试,那是不现实的。

那蓝牙调试到底能干什么?我实际用过的场景有这几个:

  • 蓝牙遥控器配对调试:有些电视的蓝牙遥控器配对失败,可以通过ADB查看蓝牙日志,分析配对过程哪里出了问题。
  • 蓝牙键盘映射:通过ADB修改蓝牙键盘的键值映射,适配电视的遥控操作。
  • 蓝牙文件传输:在没有网络的情况下,通过蓝牙OBEX协议传输小文件到电视。

这些场景都比较小众,但对于特定需求的用户来说,蓝牙调试是唯一的解决方案。

4.2 通过ADB查看和调试蓝牙状态

虽然不能直接用蓝牙跑ADB,但你可以通过ADB来调试电视的蓝牙功能。这需要电视已经通过Wi-Fi或USB连上了ADB。

常用的蓝牙调试命令有:

# 查看蓝牙状态 adb shell dumpsys bluetooth_manager # 查看已配对设备 adb shell dumpsys bluetooth_manager | grep -A 5 "Bonded devices" # 查看蓝牙日志 adb logcat -s BluetoothManager BluetoothAdapter BluetoothDevice # 开启蓝牙 adb shell svc bluetooth enable # 关闭蓝牙 adb shell svc bluetooth disable

这些命令在排查蓝牙遥控器配对问题时特别有用。比如遥控器配对不上,你可以先adb logcat -s Bluetooth抓日志,然后重新配对,看日志里报什么错。常见的错误有“配对超时”、“认证失败”、“设备不支持”等,根据错误信息再针对性解决。

还有一个技巧是用ADB模拟蓝牙按键。如果你有蓝牙键盘或者遥控器,可以通过ADB发送按键事件来测试:

# 发送Home键 adb shell input keyevent KEYCODE_HOME # 发送方向键 adb shell input keyevent KEYCODE_DPAD_UP adb shell input keyevent KEYCODE_DPAD_DOWN adb shell input keyevent KEYCODE_DPAD_LEFT adb shell input keyevent KEYCODE_DPAD_RIGHT # 发送确认键 adb shell input keyevent KEYCODE_DPAD_CENTER

这个在调试蓝牙遥控器键值映射时很有用,你可以先确认电视本身能响应这些按键,再排查是不是遥控器的问题。

4.3 蓝牙调试的实操限制与替代思路

蓝牙调试的最大限制是带宽低、延迟高。蓝牙4.0的理论速度只有24Mbps,实际传输速度可能只有几百KB/s,而且延迟在几十毫秒以上。用它来传输大文件或者执行实时性要求高的命令,体验很差。

另外,Android TV的蓝牙协议栈实现差异也很大。有些电视的蓝牙只支持音频传输(A2DP),不支持数据传输(SPP)。这种情况下,你连蓝牙文件传输都做不了。

所以我的建议是:蓝牙调试只作为最后的兜底方案。如果你有Wi-Fi,优先用Wi-Fi;如果没有Wi-Fi但有USB,用USB激活后走Wi-Fi Direct;如果连USB都没有,那蓝牙调试也只能做一些非常有限的辅助工作,不要指望它能替代ADB。

替代思路方面,如果你确实需要在没有网络的环境下调试电视,可以考虑用USB转以太网适配器。很多Android TV支持USB以太网,插上适配器后电视就有了有线网络,然后电脑也插一个USB以太网适配器,两者用网线直连,就形成了一个点对点网络。这个方法比蓝牙稳定得多,速度也快。

5. 常见问题与排查技巧实录

5.1 ADB连接失败的高频原因速查表

无线调试用多了,各种连接问题都会遇到。我整理了一张速查表,覆盖了大部分常见问题:

问题现象可能原因解决方法
adb devices显示unauthorized电视未授权USB调试在电视上确认授权弹窗,或撤销USB调试授权后重连
adb connect提示connection refusedADBD未监听网络端口执行adb tcpip 5555切换模式
adb connect提示timeout网络不通或防火墙拦截检查电视和电脑是否同一网段,关闭防火墙测试
adb devices显示offline连接不稳定或ADB版本不匹配adb kill-server后重连,更新platform-tools
配对码输入后提示失败配对码过期或端口错误重新生成配对码,确认配对端口和调试端口区分
电视重启后连接失效ADBD恢复USB模式重新激活tcpip,或使用Android 11+原生无线调试
adb install提示INSTALL_FAILED_USER_RESTRICTED电视限制了安装权限在开发者选项里关闭“监控ADB安装应用”或类似选项
adb shell提示permission denied权限不足部分命令需要root,尝试adb root或su

这张表里的问题我基本都遇到过,尤其是unauthorized和offline这两个,出现频率最高。unauthorized一般是电视上的授权弹窗没点确认,或者之前点了“始终允许”但后来撤销了。解决办法是在电视的开发者选项里找到“撤销USB调试授权”,点一下,然后重新连接,电视会重新弹窗。

offline的问题更复杂一些,有时候是网络抖动,有时候是ADB版本不兼容。我遇到过一台老电视,用最新版的ADB连上去就offline,换成30.0.0版本就正常了。所以如果你遇到offline,先试试换ADB版本。

5.2 无线调试断连的排查思路

无线调试最让人头疼的就是断连。正跑着logcat,突然断了;正install一个大型游戏,传到一半断了。断连的原因很多,我一般按以下顺序排查:

第一步,确认网络是否稳定。在电脑上ping电视的IP,看有没有丢包。ping -t <电视IP>跑个几十秒,如果丢包率超过1%,说明网络有问题。这时候检查路由器信号强度,或者换5GHz频段。

第二步,确认ADBD是否还在监听。在电视上执行netstat -an | grep 5555,看5555端口是否还在LISTEN状态。如果没了,说明ADBD挂了,需要重新激活。

第三步,确认是否有其他设备抢占连接。ADB的5555端口同一时间只能被一个客户端连接。如果你之前用另一台电脑连过,没断开,那新电脑就连不上。解决办法是在之前的电脑上执行adb disconnect,或者在电视上重启ADBD。

第四步,检查电视是否进入了休眠。有些电视在一段时间无操作后会自动休眠,休眠时Wi-Fi会断开,ADB自然也就断了。解决办法是在开发者选项里开启“保持唤醒”或者“不锁定屏幕”。

第五步,检查路由器是否开启了AP隔离。AP隔离会阻止同一Wi-Fi下的设备互相通信,ADB就连不上。解决办法是登录路由器后台,关闭AP隔离。这个选项一般在“无线设置”->“高级设置”里。

5.3 几个我踩过的坑和独家技巧

坑一:电视IP变了,adb connect连到了别的设备。有一次我家的路由器重启,电视的IP从192.168.1.100变成了192.168.1.101,而192.168.1.100被分配给了另一台设备。我执行adb connect 192.168.1.100:5555,居然连上了,但连的是那台设备,不是电视。执行adb shell发现命令都不对。后来我在路由器里绑定了静态IP,再也没出现过这个问题。

技巧一:用adb connect的自动重连脚本。我写了一个简单的bash脚本,每隔10秒检查一次adb devices,如果电视掉线了就自动重连:

#!/bin/bash TV_IP="192.168.1.100" while true; do if ! adb devices | grep -q "$TV_IP"; then adb connect $TV_IP:5555 fi sleep 10 done

这个脚本在抓长时间日志时特别有用,掉线了自动重连,不用手动干预。

技巧二:用adb shell dumpsys battery set usb 0模拟拔线。有些电视在USB连接时会限制某些功能,比如不允许安装未知来源应用。你可以用这个命令模拟USB断开,绕过限制:

adb shell dumpsys battery set usb 0

执行后电视会认为USB已断开,但ADB连接还在(如果是无线调试的话)。这个技巧在调试某些对USB状态敏感的应用时很有用。

技巧三:用adb shell uiautomator dump做UI自动化。如果你想自动化操作电视,比如自动点击某个按钮,可以用uiautomator dump获取当前界面的UI层级:

adb shell uiautomator dump /sdcard/ui.xml adb pull /sdcard/ui.xml

然后解析ui.xml,找到目标控件的坐标,再用adb shell input tap x y点击。这个在批量安装应用或者自动化测试时很有用。不过要注意,有些电视的uiautomator dump用不了,会提示“ERROR: could not get idle state”,这时候可以加--compressed参数试试。

坑二:adb shell locksettings set-disabled true导致电视锁死。这个命令是用来禁用锁屏密码的,但在某些电视上执行后会导致系统UI崩溃,电视黑屏。我有一台创维电视就是这么搞坏的,最后只能恢复出厂设置。所以执行这个命令前一定要确认电视型号,最好先备份数据。

坑三:adb shell settings put global http_proxy设置代理后忘记清除。这个命令是设置全局HTTP代理的,调试网络问题时可能会用到。但如果忘记清除,电视的所有网络请求都会走代理,代理关了之后电视就上不了网了。清除命令是:

adb shell settings put global http_proxy :0

5.4 安全注意事项与最佳实践

无线调试虽然方便,但安全问题不能忽视。ADB的5555端口是没有认证的,同一局域网下的任何设备只要能连上这个端口,就能完全控制电视。所以有几点必须注意:

第一,不要在公共Wi-Fi下开启无线调试。咖啡厅、酒店、机场的Wi-Fi都是公共网络,同一网络下可能有其他人在扫描端口。如果你必须用,确保电视的防火墙开启了,或者用Wi-Fi Direct直连。

第二,调试完成后关闭无线调试。在电视的开发者选项里关闭“无线调试”,或者执行adb usb切回USB模式。这样5555端口就不再监听了。

第三,定期检查已授权的调试设备。在电视的开发者选项里,有一个“已授权的调试设备”列表,看看有没有不认识的设备。如果有,撤销授权。

第四,不要随意执行来源不明的ADB命令。网上有些教程会让你执行一些危险的命令,比如adb shell rm -rf /之类的,这些命令会清空电视数据。执行任何命令前,先搞清楚它是干什么的。

第五,保持ADB工具更新。新版本的ADB修复了一些安全漏洞,建议定期去Android开发者官网下载最新的platform-tools。

6. 工具选型与效率提升

6.1 ADB工具版本选择与环境配置

ADB工具本身是Google提供的,包含在platform-tools包里。下载地址是Android开发者官网,直接搜“platform-tools”就能找到。下载后解压,把路径加到系统环境变量里,就可以在任意终端使用adb命令了。

Windows用户配置环境变量的步骤:右键“此电脑”->“属性”->“高级系统设置”->“环境变量”,在“系统变量”里找到Path,编辑,添加platform-tools的路径。配置完成后,打开新的CMD窗口,执行adb version,如果能显示版本号就说明配置成功了。

Mac和Linux用户更简单,把platform-tools路径加到~/.bashrc或~/.zshrc里:

export PATH=$PATH:/path/to/platform-tools

然后执行source ~/.bashrc生效。

版本选择方面,建议用最新版。我目前用的是34.0.5版本,支持Android 14的无线调试配对。如果你遇到连接问题,可以试试降级到30.0.0版本,这个版本兼容性比较好。

6.2 提升无线调试效率的辅助工具

除了ADB本身,还有一些辅助工具能提升无线调试的效率:

scrcpy:这是一个开源的屏幕镜像工具,可以通过ADB把电视屏幕投射到电脑上,并且支持用电脑的鼠标键盘控制电视。它走的就是ADB通道,所以无线调试连上后,scrcpy也能无线使用。我用它来远程操作电视,不用对着电视遥控器按半天。

adb-join-wifi:这是一个小工具,可以通过ADB让电视连接指定的Wi-Fi网络。在电视没有遥控器或者遥控器坏了的时候特别有用。

Termux:这是一个Android上的终端模拟器,可以在电视上直接运行ADB命令。不过电视上装Termux比较麻烦,需要先通过ADB安装。

ADB Keyboard:这是一个特殊的输入法,通过ADB安装后,可以用adb shell input text向电视发送文本。在电视上输入长文本时很有用,不用一个字一个字用遥控器敲。

这些工具都可以在GitHub上找到,安装和使用方法我就不展开了,有需要的可以自行搜索。

6.3 从USB到无线的平滑迁移经验

最后分享一下我从USB调试迁移到无线调试的经验。刚开始我也担心无线不稳定,所以采取了一个渐进式的迁移策略:

第一阶段,USB为主,无线为辅。平时还是用USB,只在需要远程操作的时候才切到无线。这样既能保证稳定性,又能体验无线的便利。

第二阶段,无线为主,USB备用。用了一段时间后,发现无线其实挺稳的,就把主力切到了无线。USB线收起来,只在电视重启后需要重新激活的时候才用一下。

第三阶段,完全无线。换了Android 11的电视后,原生无线调试支持重启后自动恢复,连USB激活都不需要了。这时候就彻底告别了USB线。

这个迁移过程大概花了我两三个月的时间,主要是为了确认无线调试在各种场景下的稳定性。现在我的电视已经半年没插过USB线了,所有调试都走无线,体验很好。

如果你刚开始用无线调试,建议也采取类似的渐进策略,先在一些不重要的操作上试试,确认稳定后再全面切换。毕竟调试过程中断线是很烦人的,尤其是install到一半断了,还得重新来。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询