你是否曾梦想过这样的工作流:在咖啡馆里,你只带着一台轻薄的 Surface Pro,而代码的编译、运行和调试,全部交由家里那台性能强劲的 Ubuntu 台式机来完成?更酷的是,你甚至想将手机直接插在 Surface 上,让远端的 Ubuntu 无缝识别并进行开发。
今天,我们就将这个梦想变为现实。本文将一步步指导你,如何结合 USBIP 和 FRP 这两大神器,构建一个稳定、高效的远程 Android 开发环境。
最终目标
- 物理连接: 安卓手机 <—USB—> Windows 11 (Surface)
- 开发环境: Android Studio 运行在远程的 Ubuntu 22.04 台式机上
- 连接方式: Ubuntu 通过 FRP 建立的公网隧道,访问并控制 Windows 上的手机
技术基石
- USBIP (USB over IP): 一个能将本地 USB 设备通过网络共享给远程计算机的工具。我们将使用 Windows 端的
usbipd-win
作为服务端,Linux 端的usbip
作为客户端。 - FRP (Fast Reverse Proxy): 一款高性能的反向代理工具,能轻松地将内网服务穿透到公网。我们将用它来为 USBIP 的连接搭建一条稳定的“跨海大桥”。
- Socat (Socket CAT): 一个多功能的网络工具,我们用它在 Ubuntu 端做端口中继,完美解决
usbip
命令无法指定端口的问题。