如何在连接到远程系统的设备上部署和执行应用程序?

问题描述 投票:6回答:4

我需要部署测试应用程序并在连接到同一网络中另一台计算机的设备上发出命令。

我通过http://developer.android.com/tools/help/adb.html#directingcommands阅读,但我无法找到答案。

我尝试使用adb connect <remote machine IP>但我得到unable to connect错误。

有没有办法在连接到远程系统的设备上部署应用程序并执行adb命令?

android adb android-testing
4个回答
12
投票

来自adb tag wiki

Android Debug Bridge(adb)是一个多功能命令行工具,可让您与仿真器实例或连接的Android设备进行通信。它是一个客户端 - 服务器程序,包括三个组件:

  1. 一个在您的开发机器上运行的客户端。您可以通过发出adb命令从shell调用客户端。其他Android工具(如ADT插件和DDMS)也可以创建adb客户端。
  2. 服务器,在开发计算机上作为后台进程运行。服务器管理客户端与在仿真器或设备上运行的adb守护程序之间的通信。
  3. 守护程序,在每个模拟器或设备实例上作为后台进程运行。

adb connect命令用于在网络连接设备上连接本地adb服务器和adbd守护程序。但你想要的是将本地adb客户端连接到远程(在另一个系统上运行)adb服务器。 adb可执行文件的默认行为是连接到adb服务器的本地实例。如果没有找到它会尝试启动一个。这种方法适用于在单个系统上进行所有开发的大多数环境。但在更复杂的环境中,可能会导致启动多个adb服务器实例。并且因为adbd守护程序仅支持一次连接到单个adb服务器 - 该设备将被一个系统识别,并且在其他任何地方都会丢失。

因此,为了使adb能够可靠地识别那些更复杂的配置中的设备,您需要告诉adb停止猜测并手动指定adb(即服务器或客户端)的哪个部分应该在哪个系统上运行。

首先请确保您在本地和远程系统上安装了相同且最新版本的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连接问题。


2
投票

也许这会有所帮助:

它是我几个月前开发的一个java库,专门考虑了远程adb命令。基本思想是提供一些抽象层,在远程机器上可以类似地访问设备,因为它是本地连接的。看看这个:

https://github.com/lesavsoftware/rem-adb-exec

PS。它使用SSH隧道,因此它应该足够安全。


1
投票

如何使用SSH连接到连接设备的机器并从那里发出ADB命令?这至少就是我们公司所做的事情,我们在那里拥有数十台这样的设备。


0
投票

使用Android Studio,它会尝试连接到localhost。尝试设置ANDROID_ADB_SERVER_ADDRESS,ANDROID_ADB_SERVER_PORT并在控制台中:netsh interface portproxy add v4tov4 listenport = ANDROID_ADB_SERVER_PORT listenaddress = 127.0.0.1 connectport = ANDROID_ADB_SERVER_PORT connectaddress = ANDROID_ADB_SERVER_ADDRESS并手动连接(使用工作室外部工具)到adb

© www.soinside.com 2019 - 2024. All rights reserved.