安卓模拟器网络配置

30

所以我已经设置了Charles Proxy来监控从Android模拟器发送出去的流量。

现在,当我在Android浏览器中打开网站,例如:google.com,我可以在Charles Proxy中看到google.com。

但是,当我在模拟器中打开应用程序(比如Instagram应用程序)并且应用程序进行一些网络调用时,我会在Charles Proxy上看到IP地址而非域名。

这就导致应用程序会显示错误信息,如“出了些问题”等等。

有人能告诉我如何更改Android模拟器的DNS配置,以便它发送主机名而不是IP地址吗?

或者还有其他解决方案吗?

谢谢


你的Android模拟器运行在Linux还是Windows上?它在Linux上查看/etc/resolv.conf,你也可以使用命令行中的-dns-server xx.xx.xx.xx手动设置。它是否输出任何无法找到DNS服务器的警告消息?你确定带有IP地址的数据包来自于像Instagram之类的应用程序吗? - ozborn
1
@ozborn 我正在使用Mac。我确定数据包来自Instagram,我还尝试设置其他DNS服务器(8.8.8.8),但没有成功。 你是否碰巧知道Android模拟器中网络是如何工作的? 因为当我尝试从Android浏览器访问网站时,我能够在Charles代理监视中看到主机名。但是当我使用应用程序时,IP地址会出现。 - azero0
我知道DNS和网络是如何工作的,但已经有一段时间没有使用过Android模拟器了。我不确定DNS是否是问题,或者您是否期望在Charles代理中看到DNS流量,如果您的网络配置正确,并且从DNS服务器获取合理的路由器地址,则应该可以正常运行应用程序。如果您在模拟器控制台上执行“nslookup google.com 10.0.2.3”,会得到什么结果? - ozborn
6个回答

1

您可以在启动模拟器时使用 -http-proxy 选项从命令行配置代理。在这种情况下,您可以使用以下格式之一指定代理信息:

http://<machineName>:<port>

或者

http://<username>:<password>@<machineName>:<port>

“-http-proxy”选项强制模拟器使用指定的HTTP/HTTPS代理来处理所有外发TCP连接。目前不支持UDP重定向。
另外,您可以将环境变量“http_proxy”定义为您想要使用的值。在这种情况下,您不需要在“-http-proxy”命令中指定一个值 - 模拟器在启动时检查“http_proxy”环境变量的值,并自动使用其值(如果已定义)。
您可以使用“-debug-proxy”选项来诊断代理连接问题。
您可以在此处获取有关此主题的进一步详细信息:
https://developer.android.com/studio/run/emulator-networking.html

0

无法更改 Android 模拟器的 DNS 配置,以获取主机名而不是 IP 地址,唯一可用的代理选项在其他 SO 讨论串中有解释 here

我确定数据包来自 Instagram 或者他们可能使用了某些防火墙进行安全保护。


0

使用模拟器是不可能的,但您可以使用GENYMOTION。Genymotion是一个非常好用的在线模拟器工具。

enter image description here

您可以在设置->网络中设置代理。

enter image description here

试试这个。希望能对你有所帮助。


我知道它可以在Genymotion上运行,但我想让它在普通的Android模拟器上运行。 - azero0

0

针对Linux用户

我们无法使用从Android Studio启动的模拟器,必须通过终端使用以下两个命令来启动模拟器:

首先进入Android SDK工具目录

$ cd /home/..../Android/Sdk/tools

第二步,使用以下命令启动模拟器:

./emulator -avd 模拟器名称 -http-proxy http://您的IP地址:端口号/

模拟器名称:打开AVD管理器,第二列中您将获得模拟器名称,接下来您需要用下划线替换名称之间的空格。

例如:Nexus 5 API 22 --> Nexus_5_API_22

示例:$ ./emulator -avd Nexus_5_API_22 -http-proxy http://12.1.0.222:8888/


0

在您的模拟器中 - 进入设置 ->网络和互联网 ->移动网络 ->接入点名称。然后选择您的网络进行编辑,并输入Charles计算机的IP和端口。

记得使用代理打开模拟器。 带有代理的模拟器


-2
你可以使用“ping”命令来获取IP地址。

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