Android模拟器无法访问互联网。

546
我知道之前有类似的问题被问过,但是我的问题是新的,只在安装了Android Studio 2.3后才出现的,这是2017年3月最新的版本。我有几年开发Android应用程序的经验,以前从未遇到过这个问题。升级到Android Studio 2.3版本后,我的模拟器无法访问互联网。我甚至卸载/重新安装了Android Studio 2.3并创建了一个新的模拟器,但仍然出现相同的错误。这不是一个应用程序问题。我甚至无法从Chrome访问互联网,而上周我没有这个问题。我收到的消息说服务器DNS地址找不到 - DNS_PROBE_FINISHED_BAD_CONFIG。在过去的一周中,我电脑上唯一改变的就是新版的Android,可能还有Windows 10的更新。是的,我的电脑可以访问互联网。下面是当我尝试使用Chrome搜索“Google”时模拟器上的图像。emulator with error message

更新:自从上次发布以来,我进行了几个更改,包括模拟器更新、安装Android Studio 3(Canary 5)、删除/重新创建模拟器等。我不确定哪个更改是神奇的,但我的模拟器现在可以正常访问互联网了。 - John Moore
7
我认为这个问题还不错,因为它比引用的那个问题更“通用”,而且提到了Android Studio的升级。截至2018年4月,我刚刚将它升级到3.1.2版本,突然出现了这个问题。 - Shine
103
我不明白为什么我们要把这种问题上花费这么多时间。安卓团队...只需要解决它就行了! - r3dm4n
1
我的解决方案是从模拟器设置中删除保存的网络,然后关闭模拟器,再重新运行它。 - Muhammad Asyraf
4
我删除了模拟器设备并重新启动了一个新的,问题解决了。我在这个问题上挣扎了半天……我真是个傻瓜。安卓团队,搞什么啊,你们应该比这更好吧!!! - KunYu Tsai
显示剩余11条评论
69个回答

819
  • 如果你遇到了模拟器启动问题,可以尝试第一次尝试“冷启动”模拟器,详见这里

  • 如果冷启动仍然无法解决问题,请尝试更改网络的DNS地址为8.8.8.8(谷歌的DNS)或您偏好的其他地址:

MacOSX:

  • 打开“系统偏好设置”
  • 点击“网络”
  • 选择计算机连接的网络,然后点击“高级”
  • 选择“DNS”,点击“+”按钮,输入“8.8.8.8”(谷歌的DNS),或者如果您喜欢OpenDNS,“208.67.222.222”
  • 选择“确定”和“应用”

Windows & Linux:

有关更多信息,请访问:https://developers.google.com/speed/public-dns/docs/using


修改 DNS 后,请关闭模拟器并重新启动它。


35
如果你不希望你的DNS流量经过Google,可以使用OpenDNS设置。具体来说,是使用208.67.222.222和208.67.220.220这两个IP地址。 - Justin Noel
18
我也做了同样的事情,但后来不得不重新启动模拟器才使其正常工作。不过还是谢谢你给的提示! - Steven Elliott
3
你可以改变模拟器的 DNS 设置,而不是强制更改整个计算机使用新的 DNS 服务器(然后默认情况下使模拟器继承这些更改)。有很多方法可以做到这一点。在此处可以找到有关各种选项的更多详细信息:https://dev59.com/a3I-5IYBdhLWcg3wCzxn - trcarden
3
问题通常出在DNS设置部分无效。将其重置为有效内容,就可以解决问题,不一定非要是8.8.8.8。我的Mac设置了3个DNS服务器,其中前两个是无效的。由于第三个是正常的,因此其他事情仍然可以正常工作,但我猜想模拟器只使用了前两个(通常只有主DNS和备用DNS),或者对这种错误配置不够健壮。 - sudo
2
我花了2个小时来调试我的模拟器为什么无法与Firebase通信,最终发现是这个问题。开发经验真是太好了。安卓团队要振作起来! - Sameen
显示剩余16条评论

444

在尝试了许多解决方案后,我本来打算删除我的当前AVD并重新创建一个,但是当我点击AVD上的向下箭头时,我注意到了“立即冷启动”。

AVD菜单

出于一时兴起,我尝试了这个方法。 哦,看哪,我的模拟器又可以联网了!

命令行方法

如果你是通过命令行启动模拟器,请加上-no-snapshot-load选项,例如:

%ANDROID_HOME%/emulator/emulator.exe -netdelay none -netspeed full -no-snapshot-load -avd Pixel_2_API_28

或者对于MacOSX:

$ANDROID_HOME/emulator/emulator -netdelay none -netspeed full -no-snapshot-load -avd Pixel_2_API_28

请注意,您可能需要更改 -avd Pixel_2_API_28 部分(使用您自己的虚拟设备名称)。

此外,大多数工具使用 ANDROID_HOME 环境变量名称,因此请定义该变量(如果尚未定义),但现在 ANDROID_ROOT 是另一个可选项。

决策(编辑)

好的,对于那些问为什么不只是清除数据并重新启动的人。你每次重新启动电脑都会重新格式化吗? 在模拟器上清除数据就像对手机进行恢复出厂设置或在计算机上重新格式化硬盘并重新安装操作系统一样。 除非数据完全损坏,否则这是不必要的。

当您关闭模拟器并重新启动时,就像将计算机置于休眠或睡眠模式下一样。 内存不会被清除,而是被保存。

进行冷启动等同于重新启动手机或计算机。 它会重置内存并让事物重新加载。 这允许网络仿真以清洁的内存开始并正确连接。

所以,不要清除数据。只需冷启动即可。 如果仍然无法正常工作,则进行清除,但将其保存为最后的手段。


16
在我从有线网络切换到WiFi后,这个方法解决了我的问题。 - Lucas
4
对我也适用,遇到了在不同网络适配器之间切换时的相同问题。问题似乎是仿真器仍然与以前的连接配置有关联,因此当使用“立即冷启动”启动仿真器时,网络配置将重新启动,一切正常运作。感谢分享 ;)!! - Gueorgui Obregon
6
运作正常!但是为什么呢? - ucMedia
2
你每次重新启动手机都会清除数据吗?这就是模拟器上的冷启动,即冷重启。它与关闭手机然后重新开机相同。除非仍然存在问题,否则无需在冷启动后清除模拟器中的数据。 - Timothy Winters
2
这对我有用。我尝试了不同的代理,尝试重新启动,创建了不同的 AVD。 不确定为什么有效,但有效! - Swapnil Kale
显示剩余8条评论

183

我在一个旧的 Stack Overflow 线程中找到了一个临时解决方案,网址为 Upgraded to SDK 2.3 - now no emulators have connectivity。请注意,该线程讨论的是 Android SDK 2.3,而不是 Android Studio 2.3。问题似乎是模拟器无法找到我当前使用的 DNS,临时解决方法是从命令行启动模拟器并指定 DNS 服务器。当时发生的任何问题现在似乎在最新版本的 Android Studio 中重新出现了。

下面概述的临时解决方案可以解决模拟器访问互联网的问题。但是,它无法解决尝试运行 Android 设备监视器时出现的问题。这样做仍会使模拟器像上面描述的那样离线。

请注意,sdk 中有两个名为 "emulator.exe" 的文件 -- 一个位于 sdk\tools 下,另一个位于 sdk\emulator 下。其中任何一个都可能起作用,但我使用的是 sdk\emulator 下的那个。

第一步是找到 SDK 的位置。在 Windows 上,假设用户名为 "jdoe",默认安装了 Android Studio,则 SDK 最可能在以下位置:

C:\Users\jdoe\AppData\Local\Android\sdk

第二步是确定你想要运行的AVD(模拟器)的名称。使用以下命令:

C:\Users\jdoe\AppData\Local\Android\sdk\emulator\emulator.exe -list-avds

它将显示您的AVD名称。 在我的电脑上,它只显示一个,Nexus_5X_API_25。

要使用指定的DNS服务器从命令行启动模拟器,请使用以下命令:

C:\Users\jdoe\AppData\Local\Android\sdk\emulator\emulator.exe -avd Nexus_5X_API_25 -dns-server 8.8.8.8
在这种情况下,8.8.8.8是Google公共域名服务器。
如果创建适当的环境变量并编辑您的PATH环境变量,则可以缩短上述命令,但我建议在这样做时要谨慎。

这对我绝对有效,但我希望有一种方法可以在命令行之外清理DNS。 - JaviCasa
支付了199美元的Windows Pro许可证以获取Hyer-V,发现Visual Studio模拟器不支持google_api_services后,我找到了这个解决方案,使Android模拟器能够连接互联网... 我感觉像:| - Monah
2
这完全可行,但难以置信的是,这仍然是Android Studio 3.0(模拟器27.1.12)的一个问题。可能与系统中同时拥有有线和无线网络适配器有关,并且禁用了无线网络? - Victor Rendina
@JaviCasa 在命令行之外设置DNS的方法还有其他途径,只需查看此帖的新答案即可。 - Deepak N
2
谢谢!Mac OS:〜/Library/Android/sdk/emulator/emulator -avd Pixel_2_API_28 -dns-server 8.8.8.8 - J. V.
显示剩余6条评论

133

[更新 2022] 针对 Mac 用户

Apple Silicon 用户

  1. 系统偏好设置
  2. 网络
  3. WiFi > 选择高级
  4. 从高级选项卡中选择 DNS
  5. 添加 DNS 服务器 8.8.8.8
  6. 在添加 DNS 服务器后,必须重新启动模拟器(感谢 @kapusch)

针对 Apple Silicon 用户

按照 @bourdier-jonathan 的建议,在这里可以解决 Silicon 问题: Emulator appearing offline on M1 Mac after the last update of arm64-v8a

通过用已下载的 r02 映像替换 AVD 系统映像来解决问题,因为 r03、r04 和 r05 在 m1 上都无法运行。


11
了解到添加DNS服务器后必须重新启动模拟器,这很重要。 - Kapusch
1
还要确保 8.8.8.8 DNS 服务器是 DNS 服务器列表中的第一个。 - Jonathan Morales Vélez
3
截至2021年8月24日,并使用2021年3月1日发布的版本,此解决方案对我无效。 - Jake
2
这个解决方案在使用Android Studio Arctic Fox | 2020.3.1和macOS 11.4的Apple Silicon上无法工作。 - Sunil Kumar
3
在AS Arctic Fox中无法正常工作,有其他解决方案吗? - Nanda Z
显示剩余7条评论

79

通过更新我的无线网卡,将DNS地址更改为8.8.8.8,问题得到了解决。这个问题始于一个苹果的更新,导致DNS地址出现问题。

在此输入图片描述


18
按照Ana Paula的建议,在进行更改后不要忘记重新启动模拟器。 - Jordan
1
请参考我上面的评论,使用OpenDNS而不是Google。https://dev59.com/xVgQ5IYBdhLWcg3wdzrX#e7ajEYcBWogLw_1bMFRo - Justin Noel
不一定要使用8.8.8.8或OpenDNS,任何可用的DNS服务器都可以。 - sudo

54

只需打开AVD管理器,清除该模拟器的数据即可。


3
可能是因为我的旧Wi-Fi连接被缓存了,所以当我移动到另一个Wi-Fi位置时,就会出现这个问题。我清除了 AVD(Android虚拟设备)并重新启动,然后它就能够识别新位置的Wi-Fi了。 - Mike Flynn
清除数据后,无法启动模拟器并显示 AVD 已被终止的消息。 - sejn
1
它也帮助了我。擦除数据正在运行。 - Koray Güclü

46

打开 Android 模拟器并进入扩展控件。然后转到设置 => 代理(Tab),取消选中"使用 Android Studio HTTP 代理设置",并点击"应用"。


我不得不再次检查它以使互联网工作。 :( - Sankalp
2
运行得非常流畅,但必须重新启动模拟器才能采用该设置。 - u84six
特别是在取消勾选此选项后,我不得不进行冷启动。 - Hatzen
不错,对我来说它可以工作。 - Amit raj

46

macOS:简而言之,确保您的 DNS 设置中 8.8.8.8 在第一位,擦除数据并进行冷启动。

输入图像描述


4
应该标记这个答案为正确答案!非常感谢,朋友。你帮我省了很多时间。 - Ravi
3
谢谢!我不确定为什么要这样做,但现在它可以工作了。 - nilsi
在我的 Mac 上工作正常。顺便说一句,为了安全起见,不需要清除您的数据。 - sultanmyrza
我使用 macOS。它能正常运行。 - Shihab Uddin
1
没有必要擦拭,它就像魔法一样运行良好,感谢朋友。 - Ramon Felix

39

提醒: 如果在计算机上打开VPN系统,则Android模拟器的互联网连接无法使用


4
我遇到了这个问题,解决方法是启动模拟器时不连接 VPN,等模拟器启动后再连接你选择的 VPN。请注意,不要改变原始意思。 - Pierre
1
是的,对我来说可以。我只需要在 VPN 连接后启动模拟器。 - DustinB
如果您的VPN限制了模拟器的使用,请在命令行中启动它,参见https://dev59.com/xVgQ5IYBdhLWcg3wdzrX#42784657。 - CoolMind
1
谢谢,禁用公司 VPN 就可以了... - Carra
就是这样。我不得不进行冷启动才能使其正常工作。 - Geekarist
显示剩余2条评论

31

我已经解决了从AVD管理器中清除数据的问题


4
在我的情况下,我使用 API 22 的模拟器,执行“擦除数据”和“立即冷启动”后,网络连接正常运作,但我必须重新安装应用程序。对我有效。 - Akostha

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