45

我的场景是这样的:我在家远程工作并通过 Windows 远程桌面登录到我的工作机器。我在工作计算机上使用 Eclipse 作为 Android 应用程序的开发环境。

使用 ADB,我希望能够将应用程序从我的工作计算机部署到我家庭网络上的设备上,以应对模拟器无法执行应用程序公正的情况。

我发现这篇文章讨论了一个非常相似的场景,除了部署到在本地 PC 上运行的模拟器,而不是部署到本地设备:

http://www.41post.com/5003/programming/android-adb-remote-emulator-access

我正在尝试采取相同的步骤,但要弄清楚如何在我的家庭 WiFi 网络上定位本地设备并连接到我的本地家用 PC,而不是本地模拟器。

现在,我将远程 PC 设置为尝试在端口 5585 上连接到我的公共路由器 IP - 但在我的路由器中,我将其转发到哪个 IP/端口以连接到本地设备?

在使用模拟器的示例中,它们转发到运行模拟器的本地 PC 地址和端口 5555,而 adb 未在本地 PC 上运行。我已将路由器配置为转发到我的设备 IP,设备在 WiFi 上,以及设备连接的本地 PC IP。

但是,在这两种情况下,当我在远程 PC 上尝试时adb connect <routerIP>:5585,都会出现错误unable to connect to <routerIP>:5585:5585。尝试转发/收听其他端口时,我得到相同的响应。我在路由器日志中没有收到任何安全错误,因此看来端口转发正在工作。

问题:

  • 在本地网络上配置端口转发以使用远程 adb 实例连接到本地设备时,我应该转发到哪个本地 IP/端口号?
  • 我应该以设备绑定的本地 PC IP 还是本地设备 IP 为目标?
  • 如果我以本地设备 IP 为目标,我应该转发到哪个端口号?
  • 我需要在本地 PC 上运行 adb 吗?
4

7 回答 7

50

我也有类似的情况。我在远程桌面上工作以进行开发,但我的 android 设备已连接到本地笔记本电脑。我希望能够在远程桌面上使用 eclipse 中的 adb 和 android 插件,并连接到连接到我的笔记本电脑的设备。在互联网上搜索并没有找到任何真正有用的东西后,我决定编写一个端口转发器来解决问题。你可以在这里找到它。我希望它对其他人也有帮助。

于 2013-03-12T16:00:54.980 回答
25

从 Android 4.3 开始,您可以:

  1. adb服务器监听所有接口。你有两个选择:
    • 使gListen=1并重新编译adb(我已经在 Linux-x64 机器上为您编译并放在这里
    • 使用参数启动 adb 服务器-aadb -a -P 5037 fork-server server&
  2. adb在带有额外参数的远程机器上使用,例如adb -H <remote_host> shell
于 2013-08-31T18:11:44.207 回答
8

远程主机 + 本地设备测试的另一种设置。这对于许多在家使用笔记本电脑工作的人来说非常有用,连接到他们仍在办公室的开发主机。请注意,我假设 devhost/laptop 都在运行 Unix,但其他操作系统将能够在命令提示符/shell 上运行命令。

# Kill old adb server.
devhost$ adb kill-server 

# Activate adb server on client
laptop$ adb start-server

# Start ssh tunnel. Hide/minimize this window not to close it by accident
laptop$ ssh -XC -R 5037:localhost:5037 <your devhost machine>

# Should work by now with the local device connected to the laptop
devhost$ adb logcat 
于 2020-07-15T02:10:04.123 回答
6

您可以通过端口转发解决此问题。

  • 从 Chrome 应用商店下载 Secure Shell 应用
  • 连接到您的机器(逐步设置)
  • 在此连接中,禁用 adb 服务器: adb kill-server
  • 创建一个新的端口转发连接(与常规连接相同,但将 SSH Arguments 字段设置为:-N -R 5037:localhost:5037)
  • 在您的笔记本电脑上,打开一个终端并启用 adb 服务器: adb start-server
于 2014-07-19T04:26:32.080 回答
2

我的情况需要使用位于不同网络上的 VM,但我 rmd 进入(Azure VM)。VM 和我的本地笔记本电脑都运行 Windows 10。首先,我必须在我的本地计算机上安装 USB Redirector RDP Edition(成本 80 美元,但可能有免费的替代品),然后在 VM 上安装 Google Android USB 驱动程序和VM 上的通用 Adb 驱动程序。我现在可以在 VM 上的 Android Studio 中加载一个 Android Studio 应用程序,在我的笔记本电脑上连接一个 Android 设备,并在设备上调试该应用程序。

于 2015-10-27T22:14:15.983 回答
1

可能有一个更简单的解决方案,提供设备,本地和远程机器属于同一个网络。假设您的设备在网络上有一个特定的 IP,假设您决定使用首选端口:那么,您可以执行以下步骤。

在插入设备的机器上,请运行:

adb devices

adb tcpip <PORT>

PORT 的示例是 5555。

在远程计算机上,您需要停用“发现 USB 设备”、“发现网络目标”和“端口转发”,然后运行:

adb connect IP:PORT

* IP是你的android设备IP(不是第一台机器IP),可以从adb shell ip -f inet addr

你已经准备好在远程机器上调试了。

于 2017-12-14T15:07:04.707 回答
0

这就是我如何让它从带有模拟器的主机 macOS 到 macOS 客户端工作。

在主机上

host$ adb kill-server
host$ adb -a nodaemon server

在客户端

client$ adb kill-server
client$ ssh -L 5037:localhost:5037 <host-IP>

在客户端打开第二个 shell

client$ adb kill-server  # I observe first it kills client adb
client$ adb kill-server  # then it kills server adb, do it maybo once more
client$ adb devices      # show devices on server now

现在我在 Android Studio 中也看到了主机模拟器

在此处输入图像描述

于 2022-02-25T16:12:21.457 回答