如何将本地主机IP地址转发到安卓模拟器?

12

我知道从我的开发机器转发端口到 Android 模拟器是可能的,但是如何实现呢? 我在 Android 开发者网站上找到了解决方案,但我看不懂他们的指示是什么意思...... 有人能给出清晰的说明吗?我的开发机器正在运行 Windows。

4个回答

26
为了将端口从本地机器转发到Android模拟器,您需要启用Telnet。这可以通过控制面板->程序和功能->打开或关闭Windows功能->向下滚动到Telnet客户端来完成。然后选择它并按“确定”。现在,在Emulator运行时从命令提示符中键入telnet localhost "EmulatorPortNumber"。在Emulator的标题栏中可以找到“EmulatorPortNumber”,在我的情况下是5554。
现在你会看到类似于这样的东西:
Android Console: type 'help' for a list of commands
OK

在这里,你希望尽可能少地打错字,因为当你按下退格键时,它会破坏你的命令并拒绝接受它。你需要使用的命令是 redir。这将让你从三个子命令中选择:

list    list current directions
add     add new redirection
del     remove existing redirection

现在你需要的是 add 命令。但你不能直接使用它。输入 redir add 将会给你以下内容:

KO: bad redirection format, try (tcp|udp):hostport:guestport

这意味着您需要指定要转发的端口类型(TCP或UDP端口),您要转发本地计算机上的哪个端口(hostport),以及您要在模拟器上设置哪个端口(guestport)。

因此,使用像这样的命令:

redir add udp:1337:12345

将本地机器上的UDP端口1337转发到模拟器上的端口12345。删除重定向时要小心,因为它们可能会使您的模拟器崩溃。您也可以简单地关闭模拟器来删除任何重定向。这样更容易且更安全...


3
在进入Telnet shell以访问“redir”命令之后,您需要通过运行“auth <emulator_auth_token>”命令进行授权。模拟器令牌可以在(Windows)文件中找到:c:/users/<your_username>/.emulator_console_auth_token。只需打开此文件,复制代码并插入Telnet终端中的“auth”命令之后即可。 - Velidan

18
你可以从模拟器中将localhost访问为10.0.2.2。更多详情请参阅此处

你是指像 '127.0.0.1:8080' 这样的吗?你试过 '10.0.2.2:8080' 吗? - Aman Alam
不,不完全是。我的意思是我如何将本地机器上的端口转发到Android模拟器上。然而,我已经找到了如何做到这一点... - ThaMe90
7
如果您找到了答案,请将其粘贴在这里,以便其他正在寻求解决方案的人也可以得到帮助。 - Aman Alam
该URL并未指向特定的部分,而只是一个旧页面,包含大量不同主题的文档。 - Rohit Singh
@RohitSingh 如果你注意到了URL,它们是不同的。这意味着我在2011年回答中提供的URL现在已经失效,DAC现在重定向到他们的FAQ主页。更好的URL应该是:https://developer.android.com/studio/run/emulator-networking#connecting - Aman Alam

10
您可以使用adb forward命令来设置任意端口转发-将特定主机端口的请求转发到模拟器/设备实例上的不同端口。以下是如何设置将主机端口6100转发到模拟器/设备端口7100:
adb forward tcp:6100 tcp:7100

例如,在AVD上运行NanoHTTPD Web服务器,然后在计算机上执行以下命令:
adb forward tcp:8080 tcp:8080

打开电脑上的浏览器,并导航到以下地址:

localhost:8080

http://developer.android.com/tools/help/adb.html#forwardports


4

使用最新版本的安卓模拟器(在Android Studio 2021.1中),非常简单易行。

  • 在我的开发机上,我启动了一个服务,地址为:http://localhost:8080
  • 在Chrome浏览器(开发机上),访问chrome://inspect/#devices
  • 端口转发将自动开始
  • 在安卓模拟器中,只需导航到http://localhost:8080,即可访问开发机上的网站。

谢谢,这是一个真正有效的答案。 - jean-loup

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接