需要使用代理设置运行模拟器,我在命令提示符下使用以下命令启动模拟器
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
答案 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; (没有引号)在运行配置中也修复此问题,如图所示。请注意,这是解决此问题的一种方法。您的应用可能无法在以后通过代理连接到互联网。
答案 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
答案 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+版本才能获得不再存在此问题的新模拟器。