如何为远程计算机开发和本地设备部署设置ADB

Sea*_*eau 37 android remote-debugging adb

我的情况是:我从家里远程办公并通过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.

但是在这两种情况下,当我尝试adb connect <routerIP>:5585使用远程PC时,它会给我一个错误unable to connect to <routerIP>:5585:5585.尝试转发/收听其他端口时,我得到相同的响应.我在路由器日志中没有收到任何安全错误,因此端口转发似乎正在运行.

问题:

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

Guy*_*iac 41

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

  • 项目已经转移到了bitbucket.您可以在以下网址找到它:https://bitbucket.org/chabernac/adbportforward/wiki/Home (3认同)
  • @GuyChauliac,太棒了!工作得很顺利.但有些系统无法开始充当客户端,他们可以成功ping服务器,可以充当服务器,但是当我为客户端启动命令时,它会在"Android ADB客户端启动:true"后卡住,然后即使在服务器处于就绪状态.:( (2认同)

Rom*_*jev 23

从Android 4.3开始,你可以:

  1. adb服务器监听所有接口.您有两种选择:
    • make gListen = 1并重新编译adb(我已经在Linux-x64机器上为你编译了它并把它放在这里)
    • 使用-a参数启动adb服务器:adb -a -P 5037 fork-server server&
  2. 使用adb远程机器上有额外的参数,例如:adb -H <remote_host> shell

  • 谢谢你的替代方法!澄清 - 这是否要求Android设备为4.3或更高?或者这是否需要Android 4.3发布的SDK工具? (2认同)

Jin*_*dor 6

远程主机 + 本地设备测试的另一种设置。这对于许多在家使用笔记本电脑工作、连接到仍在办公室的开发主机的人来说非常有用。请注意,我假设 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 
Run Code Online (Sandbox Code Playgroud)


Uma*_*han 5

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

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


小智 5

如果设备、本地计算机和远程计算机属于同一网络,可能有一个更简单的解决方案。

假设您的设备在网络上有一个特定的 IP 地址,并且您决定使用您的首选端口:那么,您可以执行以下步骤。

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

adb devices

adb tcpip <PORT>
Run Code Online (Sandbox Code Playgroud)

端口的示例是5555

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

adb connect IP_ADDRESS:PORT
Run Code Online (Sandbox Code Playgroud)

IP_ADDRESS是您的 Android 设备 IP 地址(不是第一台机器的 IP 地址),您可以从 获取adb shell ip -f inet addr

您已准备好在远程计算机上进行调试。


han*_*ach 5

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

A:一行命令

在模拟器的主机上

socat tcp-l:5560 tcp:localhost:5559
Run Code Online (Sandbox Code Playgroud)

在客户端

adb connect <IP address>:5560
Run Code Online (Sandbox Code Playgroud)

B:有隧道

在主机上

adb kill-server
adb -a nodaemon server
Run Code Online (Sandbox Code Playgroud)

在客户端

adb kill-server
ssh -L 5037:localhost:5037 <host IP address>
Run Code Online (Sandbox Code Playgroud)

在客户端上打开第二个 shell

adb kill-server  # I observe first it kills the client ADB
adb kill-server  # Then it kills the server ADB. Do it maybe once more
adb devices      # Show devices on the server now
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述