具有代理设置的Android模拟器 - 错误致命:.// android / base / sockets /检查失败:isValidFd(fd)。 fd 1404 max1024

时间:2014-10-21 10:09:24

标签: android proxy android-emulator

需要使用代理设置运行模拟器,我在命令提示符下使用以下命令启动模拟器

emulator -avd AVD_for_3_7_WVGA_Nexus_One -http-proxy http://username:password@IP:Port

没有http-proxy交换机它工作正常,使用http-proxy发生以下错误:

 FATAL:.//android/base/sockets/SocketWaiter.cpp:89:Check failed: isValidFd(fd). fd 1404 max1024

7 个答案:

答案 0 :(得分:57)

我遇到了完全相同的问题。

幸运的是有一个解决方法,我可以说它正在工作(至少在我的情况下):在命令中添加-no-audio参数:

emulator -avd <device_name> -no-audio -http-proxy http://<username:password@>IP:Port

编辑:即使它正在为您工作,请为the bug加注星标以解决问题!

答案 1 :(得分:6)

由于某些原因,Android Emulator不喜欢IP地址作为代理。如果您使用Fiddler,请使用localhost:8888

emulator.exe -avd Nexus_5_API_21_x86 -no-audio -http-proxy localhost:8888

也不要忘记-no-audio参数。

答案 2 :(得分:2)

添加&#34; -http-proxy none &#34; (没有引号)在运行配置中修复此问题,如图所示。请注意,这是解决此问题的一种方法。您的应用可能无法在以后通过代理连接到互联网。

enter image description here

答案 3 :(得分:1)

上述所有解决方案无法解决我的问题。对我来说,代理设置是必需的,因此禁用代理参数不适合我。帮助我的唯一解决方案是在模拟器选项中禁用“使用主机GPU”选项。还需要添加“-no-audio”参数。

它有效!慢慢地,但是有效。

答案 4 :(得分:1)

它仍然无法运作。请为此错误报告加注星标我们可以修复它 - 我已经建议将winsock.h中的FD_SETSIZE修改为更高的值,例如2048,因为根据微软的文档,它没有改变Windows套接字的实现:

// Default FD_SETSIZE is 64 which is not enough for us.
#  define FD_SETSIZE 1024

https://code.google.com/p/android/issues/detail?id=102361

答案 5 :(得分:1)

这个问题真的令人沮丧。如果固定目标是真正的根,那将是很好的,因为大多数配置现在都在代理之后。

我在过去几周研究这个问题的过程中观察到,当涉及到http-proxy时,模拟器并不稳定。

我在其他一个m / c上安装了android-studio-bundle-141.2422023-windows,虽然代理设置对于http网站很有用,但对https网站来说却失败了。

在我的m / c上它没有用。我尝试了在线列出的所有选项,如-no-audio或从APN设置(模拟器设置),或使用-http-proxy的各种版本。但没有一个对我有用。

这仍然是Android模拟器参考链接中的一个错误 - https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Status%20Priority%20Owner%20Summary%20Stars%20Reporter%20Opened&groupby=&sort=&id=102361

答案 6 :(得分:0)

最新的Android SDK工具已经修复了问题(在编写本文时处于预览状态)。您需要25+版本才能获得不再存在此问题的新模拟器。