谷歌用4000行Rust代码重写无线ADB:Android 17引入ADB Wi-Fi 2.0
6月17日,谷歌在Android 17中对无线ADB功能进行了大幅重写,推出了全新的ADB Wi-Fi 2.0,旨在解决自Android 11引入无线调试功能以来长期困扰开发者的稳定性和易用性问题。ADB即Android调试桥,是让用户从PC端控制Android设备的命令行工具。虽然ADB支持有线与无线两种连接方式,但多数用户更倾向使用有线连接,因为无线模式一直存在多种不便。
在Android Makers大会上,谷歌ADB技术负责人Fabien Sanglard详细解释了第一代方案的问题所在。2020年随Android 11发布的ADB Wi-Fi v1依赖于大量第三方库——Mac端使用苹果的mDNSResponder,Windows和Linux端则采用Chrome的Open Screen库。Sanglard形容这些选择“就像信用卡”,带来了即时的功能,但也积累了长期的技术债务。Chrome的库最初为Chromecast打造,并未针对笔记本合盖或在不同办公室之间移动等场景进行设计,网络一旦发生变化就会直接导致旧的无线堆栈崩溃,迫使开发者重新完成配对流程。
ADB Wi-Fi 2.0彻底抛弃了这些旧依赖。谷歌用一套自研的约4000行Rust轻量级库取而代之,该库专门针对跨桌面平台的网络状态变化监测进行了设计。在设备端,手机则直接调用Android原生的NsdManager平台堆栈。实际改进相当显著:系统现在会自动监测网络状态,当用户离开会议室再返回后,只要处于受信任网络,ADB Wi-Fi 2.0将自动重新启用并完成重连,无需手动干预。为实现这一可靠性,Android 17在识别受信任网络时采用了SSID与BSSID的智能组合,而不仅仅依赖BSSID,从而避免多接入点环境下的断连问题。
Android Studio的配对界面也同步获得更新。旧的对话框只会显示一个旋转的二维码,若网络阻塞就会无限卡住;新的对话框将直接列出一份可被发现本地设备的实时列表,并附带自定义设备名称。值得注意的是,框架层面的修复需要设备运行Android 17才能实现,但使用旧版Android的开发者只要在PC端将ADB更新至37版本并升级到最新版Android Studio,也能在主机侧获得一定的稳定性改善。