推薦方案:adb forward 端口映射 + Socket 通信
- PC 端執行:
adb forward tcp:12345 tcp:12345(將 PC 12345 端口映射到設備 12345)。
- 設備端(Server)監聽本地 12345 端口:
ServerSocket server = new ServerSocket(12345);
while (true) {
Socket socket = server.accept();
// 處理連接:InputStream/OutputStream 收發自定義協議數據
}
- PC 端(Client)連接 localhost:12345:
Socket socket = new Socket("127.0.0.1", 12345);
// 發送指令、接收回覆
優勢
- **無需 Root**、無需 libusb、無需內核驅動開發。
- 跨平台(Windows/Linux/Mac 均有 adb)。
- 傳輸速度可達 USB 2.0 理論帶寬(~35MB/s)。
- 斷開重連只需重新 `adb forward`。
注意
- 設備端需在 **子線程** 執行 ServerSocket.accept(),避免阻塞主線程。
- 生產環境建議加心跳、重連、加密協議。
- 若需大量數據傳輸(如文件同步),考慮 **ADB Sync 協議** 或 **MTP/PTP**。