如何使用adb(android platform-tools)在远程运行的设备上部署/执行应用程序?
我需要部署一个testing应用程序,并在与同一networking中的IP xxx.yyy.zz.pp机器连接的设备上发出命令。
我阅读了http://developer.android.com/tools/help/adb.html#directing命令,但我无法得到答案。
我试过使用platform-tools/adb connect <remote machine IP>
但没有我got unable to connect
错误。
有没有一种方法可以使用adb工具在远程运行的模拟器或设备上部署和执行命令?
从adb
标签wiki :
Androiddebugging桥(adb)是一个多function的命令行工具,可让您与模拟器实例或连接Android的设备进行通信。 这是一个客户服务器程序,包含三个组件:
- 一个在您的开发机器上运行的客户端。 您可以通过发出adb命令来从shell调用客户端。 其他Android工具,如ADT插件和DDMS也创buildadb客户端。
- 一个服务器,在您的开发机器上作为后台进程运行。 服务器pipe理客户端和模拟器或设备上运行的adb守护进程之间的通信。
- 守护进程,作为每个仿真器或设备实例上的后台进程运行。
adb connect
命令用于将本地server
连接到networking连接的device
上的daemon
。 但是你想要的是将本地client
连接到远程server
。 为此,您需要在本地和远程系统上安装最新的adb
版本。
使用以下命令在远程系统上启动一个adb server
实例(您将插入设备的实例):
adb -a -P <PORT_NUMBER> nodaemon server
现在,您应该能够通过将-H <REMOTE_IP> -P <PORT_NUMBER>
到您的所有adb
命令,从本地系统向远程运行的server
发送adb
命令:
adb -H <REMOTE_IP> -P <PORT_NUMBER> devices
或者,在客户端设置ANDROID_ADB_SERVER_ADDRESS=<REMOTE_IP>
和ANDROID_ADB_SERVER_PORT=<PORT_NUMBER>
环境variables,可以避免为每个adb
命令指定<REMOTE_IP>
和<PORT_NUMBER>
。
如果省略,则<PORT_NUMBER>
将默认为5037
。
那么使用SSH连接到您的设备所连接的机器,并从那里发出ADB命令呢? 这至less是我们在我们公司所做的,我们有几十个我们控制的设备。
也许这将有助于:
它是我几个月前开发的一个java库,专门针对远程adb命令。 基本的想法是提供一些抽象层,在远程机器上可以像在本地连接一样访问设备。 一探究竟:
https://github.com/lesavsoftware/rem-adb-exec
PS。 它使用SSH隧道,所以它应该足够安全。