1. 写在前面:为什么要在电视上折腾远程调试
做 Android TV 开发的人应该都有这种经历:拿着一个 U 盘在电视和电脑之间来回跑,装一次测试包拔一次 U 盘,改一行代码又得重新插拔一次。如果遇到那种 USB 口在电视背面的型号,整个人都得趴在地上摸索半天,那酸爽程度仅次于改 bug 改到凌晨三点。
Android TV 的调试相比手机有个天然的优势——电视这玩意儿不像手机那样天天揣兜里,它固定在一个地方不动,网络环境也相对稳定,天生就适合走无线调试。只要你家的路由器和电视处于同一个局域网内,完全可以用 ADB 的无线连接功能把数据线扔到一边,全程坐在沙发上敲命令调试。
这篇内容不是给你讲那种高大上的理论,而是把我从接到一台 Android TV 设备到完成远程调试的全过程、踩过的坑、试错之后留下来的有效方案,一步一步写清楚。无论你是刚入行的应用开发,还是做 TV 端系统集成的测试工程师,甚至只是想把家里那台智能电视折腾成开发机,这套流程都能直接照抄。
需要提前说明一点:整个流程依赖 ADB(Android Debug Bridge,安卓调试桥),这是谷歌官方提供的一套调试工具,不是第三方黑科技,放心用。接下来我会从零开始,把环境配置、局域网准备、无线连接、常用命令、问题排查这条链路全部过一遍。
2. 调试前的基础环境准备
2.1 先认清自己手头的环境
在开始敲命令之前,得先搞清楚三个问题:电脑是什么系统、电视是什么系统、电视的 ADB 开关在哪儿。
电脑系统这块,Windows、macOS、Linux 都能做 ADB 调试,但命令行的细节略有差异。我用的是 Windows,所以这篇文章里涉及路径、命令的地方主要以 Windows 环境为例,macOS 和 Linux 的差异点我会顺带提一句,不至于你换台电脑就抓瞎。
Android TV 的系统版本也很重要。Android 9 及以下的电视,无线调试稍微麻烦一点,因为没有内置的无线调试开关,得先用 USB 连一次才能开启 5555 端口的监听;Android 10 及以上(包括 Google TV),系统设置里通常直接有一个“无线调试”选项,但 Android TV 的设置界面和各厂商定制的 UI 差异很大,有时候这个选项藏得比较深。我手上这台测试机是 Android TV 11 的定制系统,设置路径是“设置-设备偏好设置-关于-版本号”,连点七次版本号打开开发者选项,然后返回上一级进入开发者选项,里面能找到“USB 调试”和“无线调试”两个开关。不同品牌的电视路径大致相似,核心思路就是找到“开发者选项”。
第三个问题是最玄学的:ADB 开关在哪儿。索尼、LG、海信、创维、小米这些品牌的电视,打开开发者模式的方式五花八门,有的需要连点版本号,有的需要输入一串特殊的遥控器按键组合,还有的在工程模式里。这个没有统一答案,建议直接搜索“品牌 + 型号 + 打开 ADB”,比盲猜效率高得多。
2.2 安装 ADB 工具:别用杂牌工具包
ADB 工具本身是 Android SDK 的一部分,但没必要为了一个 adb.exe 去安装好几个 G 的 Android Studio。谷歌官方提供了一个精简的独立组件叫SDK Platform Tools,里面就包含了 adb、fastboot、sqlite3 这些命令行工具,体积只有十几兆,干净得很。
下载地址是 Android 开发者官网的 SDK Platform Tools 页面,选择对应自己系统的压缩包,解压到一个路径里没有中文的目录。我习惯放在D:\platform-tools,方便找。解压之后你会看到里面有adb.exe、AdbWinApi.dll、AdbWinUsbApi.dll这堆文件,adb.exe就是主角。
接下来把D:\platform-tools添加进系统的 PATH 环境变量,这样你就不用每次都在终端里cd到那个目录才能执行 adb 命令了。Windows 的操作路径是:右键“此电脑”→“属性”→“高级系统设置”→“环境变量”,在“系统变量”里找到 Path,编辑新增一行D:\platform-tools。改完之后打开一个新的命令行窗口,输入adb version,能输出版本号就代表环境变量生效了。
注意:改完环境变量后,之前已经打开的命令行窗口不会自动刷新,必须新开一个窗口才能识别到新路径。这个细节卡住过不少人。
不推荐用各种“ADB 工具箱”“一键 ADB 安装器”,原因有三:第一,这些工具多半是个人打包的,里面捆绑了广告或者修改版 adb,安全性不可控;第二,版本往往很老,对于新版 Android 系统可能出现兼容问题;第三,出了问题你根本不知道去哪反馈,而官方版本出了问题直接去官网下最新的就能解决。老老实实用官方包,省心。
2.3 确认电视端开启调试模式
电脑端工具准备好之后,就该处理电视端了。拿着遥控器,按以下思路操作:
- 进入“设置”,找到“关于”或者“设备偏好设置”这一类入口。
- 找到“版本号”或者是“内部版本号”,用遥控器连续按 OK 键七次,直到屏幕提示“您已处于开发者模式”。
- 回到设置首页,这时候应该能看到多了一个“开发者选项”的入口。
- 进入开发者选项,把“USB 调试”打开。
这里要特别提醒:Android TV 和手机不一样,它的开发者选项里可能同时有“USB 调试”和“无线调试”两个开关。如果你的电视系统是 Android 10 及以上,理论上只需要开“无线调试”就行。但实际测试下来,建议两个都打开,因为某些定制系统的“无线调试”开关只是摆个样子,真正生效的还是“USB 调试”开关。
老款 Android 9 电视的模式是:即使你打开了 USB 调试,系统默认也不会监听 5555 端口,必须先用 USB 线连接电脑执行一次adb tcpip 5555才能开启无线调试端口。这个痛点我在后文会专门写一节,因为太容易踩了。
如果电视上提示“允许 USB 调试吗?”之类的弹窗,记得勾选“始终允许使用这台计算机进行调试”,省得每次连接都要跑过去按遥控器确认。
3. 局域网配置与无线连接实操
3.1 搭建一个合格的调试网络
无线调试的前提是电视和电脑在同一个局域网里,但这“同一个局域网”的坑比想象中多。
第一,电视连的必须是路由器的2.4G 或者 5G Wi-Fi,不能是访客网络。很多路由器开了“AP 隔离”功能,这个功能会把同一 Wi-Fi 下的设备互相隔离,让它们无法互相访问。如果你发现电视和电脑都连着同一个 Wi-Fi 但就是连不通,先去路由器后台看看 AP 隔离开没开。
第二,如果家里有 Mesh 组网或者多个路由器,电视接在子路由上、电脑接在主路由上,此时两台设备虽然在同一个“大网络”里,但不同网段之间默认是禁止互访的。最稳妥的做法是让电视和电脑接同一个路由器。
第三,有条件的话优先用5G 频段。不是说 2.4G 不能用,而是 2.4G 频段干扰太多,微波炉、蓝牙、隔壁家的 Wi-Fi 都会挤这个频段,调试过程中延迟会忽高忽低,安装大 APK 的时候尤为明显。5G 频段的吞吐量和稳定性都好很多。
网络准备好了,接下来就是找电视的 IP 地址。路径通常为“设置-网络-查看网络状态”,不同品牌显示的位置略有差异,但核心是找到那串 IPv4 地址,比如192.168.1.100。把这个 IP 抄下来,后面要用。
3.2 核心操作:连接电视并验证
确保电脑和电视已经连上同一个局域网,然后在命令行里执行以下命令:
adb connect 192.168.1.100:5555正常情况下你会看到connected to 192.168.1.100:5555的提示。
但这里有个新手很容易犯的错误:直接执行adb connect 192.168.1.100,不加端口号。虽然 adb 默认会尝试 5555 端口,但某些系统对不带端口的连接请求响应异常,导致连接超时。强烈建议每次手动加上:5555后缀,避免这种莫名奇妙的失败。
连接成功之后,执行adb devices查看设备状态:
adb devices输出结果中,设备列表应该有一行192.168.1.100:5555加上device状态,比如:
List of devices attached 192.168.1.100:5555 device如果你看到的是unauthorized,说明电视上有确认弹窗没有点击。拿着遥控器去电视上确认授权即可。如果看到的是offline,多半是端口没配对或者说连接状态异常,断开重连一次通常能解决。
3.3 初始化连接时的常见异常处理
异常一:连接超时,报cannot connect to 192.168.1.100:5555: 由于目标计算机积极拒绝,无法连接。翻译成人话就是:电视的 ADB 服务没起来。解决办法是在电视端确认“USB 调试”是否真的打开了,同时确认电视和电脑是否真的在同一网段。如果电视是 Android 9 及以下系统,很可能还没执行过adb tcpip 5555,需要用 USB 线先连一次电视,执行一次端口开启命令。
异常二:设备状态一直是offline。这个问题的典型原因是电视上之前连接过其他电脑,或者 ADB 的配对状态出了问题。最简单的办法是:电视端断开网络重连一次、关闭再开启 USB 调试,然后在电脑上执行:
adb kill-server adb start-server adb connect 192.168.1.100:5555异常三:显示连接成功,但执行任何命令都一直卡住不动。多半是电视进入了休眠或者息屏状态。Android TV 的休眠机制比较激进,不小心碰到遥控器的电源键就会进入待机,这时网卡虽然还活着,但 ADB 服务已经响应不了了。物理上让电视保持亮屏状态,或者修改电视的休眠时间设置。
异常四:连接成功了,但是电视重启后连不上。这个太正常了,电视重启后 ADB 的授权状态会重置,部分系统还会关闭 ADB 服务。可以把下面的命令保存为一个批处理脚本,每次要调试时跑一次:
adb connect 192.168.1.100:5555 adb wait-for-device然后手动在电视上确认授权。如果你想要电视重启后 ADB 还能自动开启,那要看系统是否支持adb shell settings put global adb_enabled 1,但不同厂商的系统对这条命令的响应不一样,不是万能解法。
3.4 有线连接与无线连接的切换技巧
虽然我们这篇文章的重点是无线调试,但不得不提一句:第一次连接电视时,有线 USB 几乎是避不开的,除非你的电视系统很新,原生支持无线配对。
原因很好理解:Android 9 及以下系统的 ADB 默认不监听任何网络端口,必须通过 USB 连接后执行一条命令才能开启无线监听。Android 10 以上的系统虽然设置里可能有无