我需要在连接到同一网络中另一台计算机的设备上部署测试应用程序并发出命令。
我通过http://developer.android.com/tools/help/adb.html#directingcommands阅读,但找不到答案。
我尝试使用,adb connect <remote machine IP>
但出现unable to connect
错误。
有没有办法adb
在连接到远程系统的设备上部署应用程序并执行命令?
从adb
标签Wiki:
Android调试桥(adb)是一种多功能的命令行工具,可让您与仿真器实例或连接的Android设备进行通信。它是一个客户端服务器程序,包括三个组件:
- 在您的开发计算机上运行的客户端。您可以通过发出adb命令从Shell调用客户端。其他Android工具(例如ADT插件和DDMS)也会创建adb客户端。
- 服务器,在开发计算机上作为后台进程运行。服务器管理客户端与在模拟器或设备上运行的adb守护程序之间的通信。
- 守护程序,在每个仿真器或设备实例上作为后台进程运行。
adb connect
命令用于将本地adb
服务器与网络连接设备上的adbd
守护程序连接。但是,您想要的是将本地adb
客户端连接到远程(在另一个系统上运行)adb
服务器。adb
可执行文件的默认行为是连接到adb
服务器的本地实例。如果没有找到,它将尝试启动一个。这种方法非常适合在单个系统上完成所有开发的大多数环境。但是在更复杂的环境中,这可能会导致启动多个adb
服务器实例。而且由于adbd
守护程序仅支持连接到单个adb
一次一台服务器-该设备将被一个系统识别,并且在其他任何地方都将丢失。
因此,为了adb
可靠地识别那些更复杂配置中的设备,您需要告诉adb
您停止猜测并手动指定哪个部分adb
(即server或client)应该在哪个系统上运行。
首先,请确保adb
在本地和远程系统上都安装了相同且足够新的版本(最新的Google官方版本通常效果最好)。而且,任何adb
一个系统上当前都没有服务器在运行。
然后,adb server
使用以下命令在远程系统上启动实例(将设备插入该实例):
adb -a -P <PORT_NUMBER> nodaemon server
现在,您可以adb
通过添加-H <REMOTE_IP> -P <PORT_NUMBER>
以下adb
命令来强制本地系统上的客户端使用其他(远程)服务器,而不是启动其自己的(本地)实例:
adb -H <REMOTE_IP> -P <PORT_NUMBER> devices
另外,在客户端设置ANDROID_ADB_SERVER_ADDRESS=<REMOTE_IP>
和ANDROID_ADB_SERVER_PORT=<PORT_NUMBER>
环境变量将使您避免必须为每个命令指定<REMOTE_IP>
和。<PORT_NUMBER>
adb
如果省略,则<PORT_NUMBER>
默认为5037
。
这个官方的内部adb
编排解决方案不是SSH隧道的互斥替代方案,它只是解决了另一个更重要的问题。您可以在此之上添加隧道以增加额外的安全性或帮助解决多站点网络环境中的路由问题。但是单凭隧道无法解决所有adb
连接问题。
虚拟化环境也是如此-adb server
在主机和来宾系统之间运行多个实例也将导致adb
连接问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句