Android模拟器无法访问互联网

我知道以前也有人问过类似的问题,但我的问题是在安装了Android Studio 2.3(2017年3月的最新版本)之后才出现的。我有几年开发Android应用程序的经验,以前从未遇到过这个问题。在升级到Android Studio的2.3版本后,我的模拟器不再能够访问互联网。我甚至从头开始卸载/重新安装了Android Studio 2.3并创建了一个新的模拟器,但我仍然得到相同的错误。这不是应用程序的问题。我甚至无法通过Chrome浏览器访问互联网,而上周我还没有遇到这个问题。我得到的消息说无法找到服务器DNS地址——DNS_PROBE_FINISHED_BAD_CONFIG。上周,我的电脑唯一发生了变化的是新版安卓系统,还有可能升级到Windows 10。是的,我的电脑可以上网。下面是我尝试使用Chrome搜索“谷歌”时的模拟器图像。 emulator with error message . < / p >
414258 次浏览

我在升级到SDK 2.3 -现在没有模拟器连接的旧Stack Overflow线程上找到了一个临时解决方案。注意,本文讨论的是Android SDK 2.3,而不是Android Studio 2.3。问题似乎是模拟器无法找到我的计算机当前正在使用的DNS,临时的解决方法是从命令行启动模拟器并指定DNS服务器。无论当时发生了什么问题,一定会在最新版本的Android Studio中重新出现。

下面概述的临时解决方案修复了模拟器访问internet的问题。但是,它并没有修复试图运行Android设备监视器时发生的问题。这样做仍然会使模拟器脱机,如上所述。

注意,在sdk中有两个名为“模拟器.exe”的文件——一个在sdk\tools下,另一个在sdk\emulator下。任何一个都可能在下面工作,但我使用sdk\emulator下的一个。

第一步是找到SDK的位置。假设用户名为“jdoe”,并且在Windows上默认安装了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是谷歌公共域名服务器。

如果创建适当的环境变量并编辑PATH环境变量,则可以缩短上面的命令,但我建议在这样做时要谨慎。

我在升级后遇到了同样的问题。在模拟器中打开Chrome浏览器后,无法再访问google.com。

我发现了一个在SO上发帖,这表明问题是模拟器试图使用断开连接的网络适配器。对我来说,这个问题是在我连接到局域网时发生的。禁用无线局域网适配器解决了这个问题。

禁用适配器。

  1. 导航到网络连接
  2. 找到适配器
  3. 右键单击并选择禁用

这发生在我身上时,模拟器冻结,我必须杀死进程。信号图标总是显示屏幕截图中的小“x”,没有网络连接成功。

唯一有帮助的是卸载和重新安装模拟器(不是AVD图像)

在Android Studio中:

工具-> Android -> SDK管理器 取消选中“Android Emulator”,让它卸载,然后再次检查,让它重新安装

截图

经过10天的麻烦,我刚刚删除了C:\Android\.android\中的所有内容,并删除了所有创建的avd。现在互联网似乎工作得很好。

这是一个问题,我上次模拟器更新自己,然后禁用其他网络适配器修复它。现在它又突然出现了,但唯一启用的适配器是一个wifi适配器,所以我没有什么可以禁用的。

在我通过提示更新模拟器工具到26.1.1之后,这个问题才再次出现。我通过SDK Tools更新选项卡和值得庆幸的是卸载并重新安装模拟器,现在再次安装时唯一的选择是安装26.0.3(似乎工作正常)。

这个故事的寓意是要非常小心模拟器更新

只需要用另一个目标API重新创建模拟器就可以了

对我来说,当我把笔记本电脑带回家而没有重新启动模拟器时,问题就出现了。据我所知,当模拟器启动时,它会读取你PC的DNS设置并使用它们。当我在我的家庭网络,我的工作DNS设置失败 是的。只要重新启动模拟器就解决了我的问题

我也有这个,我通过创建新的android模拟器虚拟设备解决了这个问题,并选择了Nexus 4 api 27。在我创建Pixel设备api 28之前,即使在重新创建设备后,它也无法工作。所以我尝试了完全不同的配置和Android模拟器有互联网连接的预期。其他的解决方案对我来说都不奏效,但我并没有尝试所有的方法。

简单地打开AVD管理器并擦除该模拟器的数据为我工作。

我在我的MAC上突然遇到了同样的问题。在尝试了一切之后,我终于删除文件夹 /Users/Philippe/。android和创建一个新的模拟器

我也面临着同样的问题,但我试图通过各种帖子来解决这个问题。今天我发现了这个问题。问题很可能出在你的电脑配置上,而不是Android Studio和Android模拟器。

问题来自您的网络设置。只要设置主DNS服务器到8.8.8.8,这将解决问题。

如果android浏览器可以访问Internet,

你可以从终端运行模拟器 通过此命令

. sh

然后进入SDK路径

$ /tools/emulator -avd . Nexus_5X_API_23 -netspeed full

. Nexus_5X_API_23 -netspeed none -netspeed full

. Nexus_5X_API_23 -netspeed none

它解决了你的网络问题…

  • 第一次尝试“冷启动”;在这里所建议的模拟器。

  • 如果冷启动不起作用,请尝试将网络的DNS地址更改为8.8.8.8(谷歌的DNS)或其他您喜欢的地址:

MacOSX:

  • 开放“系统偏好”;
  • 点击“网络”;
  • 选择您的计算机所连接的网络,然后单击“高级”。
  • 选择&;DNS",选择&;+"按钮,输入“;8.8.8.8”;(谷歌的DNS)或者如果你喜欢OpenDNS,“208.67.222.222”;
  • 选择“Ok"和“;Apply"

窗户,Linux:

https://developers.google.com/speed/public-dns/docs/using


之后,关闭模拟器并重新启动它。

最后,我必须删除.android文件夹并创建一个新文件夹。看来文件损坏了

也许你为Android Studio设置了代理,但代理不起作用。尝试没有代理。

在8.8.8.8更新我的WIFI适配器以解析DNS为我解决了这个问题。这是在苹果的一次更新搞乱了DNS地址之后发生的。

enter image description here

我在android studio 3.1上,它发生了。 通过重启adb服务器

解决了这个问题
$ adb kill-server
$ adb start-server

希望能有所帮助。谢谢你!

打开Android模拟器并转到扩展的控制. exe然后转到设置=>代理(选项卡),取消选中“使用Android studio HTTP代理设置”;点击“应用”。

在尝试了许多这些解决方案后,我打算删除我当前的AVD并重新制作它,但当我点击AVD上的向下箭头时,我注意到“现在冷启动”。

AVD Menu

一时兴起,我试了一下。瞧,我的模拟器又有互联网连接了!

命令行方式

如果你通过命令启动模拟器,传递-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是另一个命名选项。

决定(编辑)

好吧,对于那些说为什么不擦除数据重新启动的人。 你每次重启电脑时都重新格式化吗?擦除模拟器上的数据就像对手机进行出厂重置或重新格式化PC上的硬盘驱动器并重新安装操作系统。除非数据完全损坏,否则没有必要

当你关闭模拟器并重新启动它时,它就像将你的电脑置于休眠或睡眠模式。记忆不是被抹去,而是被保存。

冷启动和重启手机或电脑是一样的。它可以重置内存并重新加载。这允许网络模拟以干净的内存启动并正确连接。

所以,不要擦除数据。只是冷启动。如果还是没用,那就擦一下,但要留作最后的手段。

与我的模拟器有同样的问题,做了上面的所有事情,但没有工作。 更改我的默认网关 控制面板->网络和共享中心->本地连接设置: 192.168.1.119到192.168.1.1在我这里工作。 我不太清楚这个IP地址是如何工作的,但也许它会节省一些人的时间和挫折

我有同样的问题,我解决了以下步骤:-

转到模拟器设置,然后转到

设置->代理->手动配置或使用Tick使用Android Studio HTTP代理模拟器。

请投票,如果这对你有用的话

我已经解决了从AVD Manager .擦除数据

提醒:如果你在你的电脑上打开了一个VPN系统,Android模拟器的网络连接会做不工作

去你的适配器设置,将DNS更改为8.8.8.8,也就是谷歌,它会工作,它对我来说很有效

对我来说,问题是我的电脑连接了VPN。一旦我断开连接,它开始在模拟器中工作。

专业提示:在Linux上使用AVD和dnsmasq

为了理解你阅读设置Android模拟器网络从Android Studio。

被模拟设备的环回是127.0.0.1,主机环回可以从被模拟设备的10.0.2.2访问。

在启动时,模拟设备通过从/etc/resolv.conf中的主机中选择DNS名称服务器来设置它的DNS名称服务器。

但关键是,如果你使用dnsmasq, you setnameserver 127.0.0.1in/etc/resolv.conf ',那么模拟设备将击中它自己的环回,那里没有任何运行,而不是主机环回,那里有一个DNS服务器正在运行。

要解决这个问题,在从CLI运行AVD时添加-dns-server

例如:

  • Cloudflare DNS: ~/Android/Sdk/emulator/emulator -avd Nexus_9_API_23 -dns-server 1.1.1.1
  • 主机的dnsmasq: ~/Android/Sdk/emulator/emulator -avd Nexus_9_API_23 -dns-server 1.0.2.2

对于这个问题,我有一个简单而永久的解决方案。

进入网络与互联网选项-> enter image description here

单击Etherenet无线网络(你连接的)选项-> enter image description here < / p >

单击更改适配器选项 -> enter image description here < / p >

右键单击已连接的网络。 enter image description here < / p > 将打开一个对话框,只需单击互联网协议版本(TCP/IPv4)选项。 enter image description here < / p >

另一个对话框将打开,忽略关于IP地址的第一个设置(保持它已设置),并单击请使用以下DNS服务器地址:的单选按钮,并在首选DNS服务器:中输入8.8.8.8,在备用DNS服务器中输入8.8.4.4: enter image description here < / p >

现在你可以随时打开你的模拟器,你会得到互联网在安卓模拟器。

对我来说,在OSX上,这是因为使用第三方VPN解决方案…它安装了一些avd和Genymotion无法通过的网络钩子。必须卸载它才能正常工作。在某些网络上工作得很好,而在其他网络上则不行……很奇怪…

同样的网络连接问题为我在android模拟器V 7.1.1,然后我已经在我的Android模拟器中减少了Android版本下面的安装7.1.1,然后它的工作很好。

我有visual studio 2017,这简单的几次点击已经修复了Android模拟器的互联网问题。

enter image description here

我在Windows 10上也遇到了同样的问题。我只是去了Network & internet settings> Change adapter options> right-click on Wi-Fi and chose properties> Chose Internet protocol version 4 in the list and clicked properties> Turned on the "Use the following DNS server addresses" and filled the first part with "8.8.8.8" address。 问题解决了!< / p >

Android 9+模拟器适合我,但Android 7不能连接到互联网。

我办公室用的是小飞贼应用防火墙。我把它关掉了,Android 7运行正常。检查一下防火墙可能是个好主意。

在我的情况下,它是查尔斯代理应用程序。即使关闭应用程序,模拟器仍然不能访问互联网。需要停止监听查尔斯的网络。

关闭模拟器并重新打开对我来说很有效

< >强操作系统 WINDOWS 10 < / p >

如果你使用代理,下面的代码可能会有用:

adb shell settings put global global_http_proxy_port YOUR_PROXY_PORT


adb shell settings put global global_http_proxy_host YOUR_PROXY_IP


reboot

我也有一个问题,通过在Android Studio设置中禁用代理,并使用“Cold Boot Now”运行模拟器,问题得到了解决。

Mac用户的(2022年更新)

对于NOT 苹果硅用户

  1. 系统设置
  2. 网络
  3. 无线网络比;选择先进的
  4. 从高级选择DNS选项卡
  5. 添加DNS服务器8.8.8.8
  6. 模拟器必须在添加DNS服务器后重新启动(感谢@kapusch)

对于苹果硅用户

根据@bourdier-jonathan 你可以在这里修复硅的问题: 在arm64-v8a最后一次更新后,模拟器在M1 Mac上出现脱机 < / p >

通过将您下载的AVD系统映像替换为r02映像。因为r03 r04 r05在m1上都不起作用

请点击下面的链接。

https://developer.android.com/studio/run/emulator-networking

打开模拟器,单击更多...,然后单击设置和代理。从这里,您可以定义自己的HTTP代理设置。

< br >

输入主机名 执行命令> cmd > hostname

最后,通过chrome浏览器或谷歌检查模拟器内部的网络访问。

注意:经常擦数据就会清除这个问题。请遵循所有步骤

我知道这很旧了。但它帮了我一点忙。我在Xamarin遇到了同样的问题。表单应用程序。我的模拟器无法连接到公共api。

我通过在Android设备管理器中使用出厂默认设置启动模拟器来解决这个问题。

enter image description here

当我在从家里到咖啡馆的路上一直开着模拟器时,我就遇到了这个问题。“现在冷启动”;修正了这个问题。

  1. 第一:开启飞行模式。
  2. 第二:连接模拟器wifi。

设置DNS 8.8.4.4 然后运行模拟器-avd react-native-device -dns-server 8.8.4.4

这对我很有用

“移动数据”设置需要打开。冷启动不起作用,但在我打开移动数据后它起作用了吗

在最新的Mac与Jio IP6配置问题,它阻止互联网上的android模拟器,所以从android虚拟设备管理器模拟器列表操作列下拉选择选项&;修正了这个问题。我面对这个问题后,我保持不变,它为我工作。

macOS:长话短说…确保你的DNS设置8.8.8.8是第一行,擦除数据并进行冷启动。

enter image description here

只要去AVD经理和冷启动现在为我工作

我观察到的是,当你切换wifi连接时,android模拟器正在运行。它无法连接到新的wifi。

一个简单的解决方案是重新启动android模拟器。

我可以让它在关机后工作,并在android配置上打开wifi

打开和关闭wifi

如果您的网络上有PiHole,请确保您的Pi正在工作,并且您可以访问PiHole的web UI。每一次,当我的模拟器突然无法连接到互联网时,都是因为它们中的任何一个出了问题。

冷启动选项适合我

这些答案对我都没用。我可以通过下载“android-studio-2021.1.1.8-mac_arm”来让它工作。之后就不需要额外的步骤了。

MacOS解决方案,不为整个机器使用自定义DNS

步骤1

找到Android Studio在Android SDK中使用的emulator可执行文件,并将其重命名为emulator-original

我的位于/usr/local/share/android-sdk/emulator/emulator,但它可能会根据个人设置而有所不同。

步骤2

在包含以下命令的原始文件(或使用您选择的DNS服务器)的位置添加一个名为emulator的新文件。

#!/bin/bash
$0-original "$@" -dns-server 8.8.8.8

步骤3

使新的emulator文件可执行。

chmod +x emulator

步骤4

使用Android Studio重新启动模拟器。

试试这些步骤,它们对我很有效:

  1. 断开你的电脑与互联网的连接
  2. 在仍然断开连接时关闭模拟器
  3. 再次连接到互联网
  4. 最后再次启动模拟器

在过去的8个小时里,我一直在想办法解决这个问题。事情发生在我家停电之后。我的模拟器将不再连接到我的电脑的互联网。我试了所有的解。将DNS更改为8.8.8.8有效,但我不想将所有流量路由到谷歌。

最终奏效的是。我知道这很疯狂,但是拔掉我的wifi路由器/调制解调器。一个快速拔插修复了这个问题。在这个SO问题和其他5个问题上,我用尽了一切办法。我甚至重新下载了Android Studio和模拟器。这些都没用。试着拔掉你的路由器/调制解调器。

< >强窗口 DNS设置在所选网络连接的“TCP/IP属性”窗口中指定

举例:在Windows 10操作系统下修改DNS服务器设置

进入控制面板。 点击网络和互联网>网络共享中心;更改适配器设置。 选择需要配置谷歌Public DNS的连接。例如:< / p >

如果要更改以太网连接的设置,右键单击以太网接口,选择“属性”。 要更改无线连接的设置,右键单击Wi-Fi界面并选择属性。 如果系统提示输入管理员密码或确认,请输入管理员密码或确认

选择Networking选项卡。在“此连接使用以下项目”下,选择“Internet协议版本4 (TCP/IPv4)”或“Internet协议版本6 (TCP/IPv6)”,然后单击“属性”。

单击“高级”,选择“DNS”页签。如果那里列出了任何DNS服务器IP地址,请将它们写下来以备将来参考,并将它们从这个窗口中删除。

单击OK。

勾选“使用以下DNS服务器地址”。如果“首选DNS服务器”或“备选DNS服务器”中存在IP地址,请将其记录下来,以便后续查询。

替换为谷歌DNS服务器的IP地址。

对于IPv4: 8.8.8.8和/或8.8.4.4。 IPv6: 2001:4860:4860::8888和/或2001:4860:4860::8844。 仅IPv6:您可以使用谷歌Public DNS64代替前面提到的IPv6地址。 测试你的设置是否正常工作;

对要更改的其他网络连接重复此过程。

< >强macOS

. DNS设置在Network窗口中指定

举例:在macOS 10.15操作系统下修改DNS服务器设置

点击苹果菜单>系统偏好>网络。 如果窗口左下角的锁图标被锁定,请单击该图标进行更改,并在提示验证时输入密码。 选择需要配置谷歌Public DNS的连接。例如: 如需更改Wi-Fi连接设置,请选择“Wi-Fi”,单击“高级”。 如果要更改以太网连接的设置,请选择“内置以太网”,然后单击“高级”。 选择DNS选项卡。 单击+替换任何列出的地址,或添加,在列表顶部的谷歌IP地址: 对于IPv4: 8.8.8.8和/或8.8.4.4。 IPv6: 2001:4860:4860::8888和/或2001:4860:4860::8844。 仅IPv6:您可以使用谷歌Public DNS64代替前面提到的IPv6地址。 点击OK >适用。 测试你的设置是否正常工作;请参见测试您的新设置。

.

.

. < p > Linux 在大多数现代Linux发行版中,DNS设置是通过网络管理器配置的

举例:修改Ubuntu的DNS服务器设置

单击System >偏好比;网络连接。 选择需要配置谷歌Public DNS的连接。例如: 要更改以太网连接的设置,请选择“有线”选项卡,然后在列表中选择您的网络接口。通常称为eth0。 若要更改无线连接的设置,请选择“无线”选项卡,然后选择适当的无线网络。 单击“编辑”,并在出现的窗口中选择“IPv4设置”或“IPv6设置”选项卡。 如果选择的方式为“自动(DHCP)”,请选择“仅自动(DHCP)地址”。如果该方法设置为其他方法,则不要更改它。 在“DNS servers”字段中输入谷歌公网DNS IP地址,以逗号分隔。 对于IPv4: 8.8.8.8和/或8.8.4.4。 IPv6: 2001:4860:4860::8888和/或2001:4860:4860::8844。 仅IPv6:您可以使用谷歌Public DNS64代替前面提到的IPv6地址。 单击Apply保存更改。如果系统提示您输入密码或确认,请键入密码或提供确认。 测试你的设置是否正常工作;请参见测试您的新设置。 对要更改的其他网络连接重复此过程。 如果您的发行版不使用网络管理器,您的DNS设置在/etc/resolv.conf中指定

示例:在Debian服务器上修改DNS服务器设置 编辑/etc/resolv.conf: < / p >

sudo vi /etc/resolv.conf

如果出现任何命名服务器行,请写下IP地址以备将来参考。

用或添加以下行替换命名服务器行:

IPv4:

nameserver 8.8.8.8
nameserver 8.8.4.4

IPv6的:

nameserver 2001:4860:4860::8888
nameserver 2001:4860:4860::8844

对于IPv6,可以使用谷歌Public DNS64代替上述IPv6地址。

保存并退出。

重新启动您正在使用的任何Internet客户机。

测试你的设置是否正常工作;请参见测试您的新设置。

正如@osama buzdar所指出的,模拟器首先查看的DNS设置可能在/etc/resolv.conf中指定。在我的情况下,macOS Catalina 10.15.7,该文件中有2个地址:第一个是IPv6,第二个是IPv4,由于某种原因,模拟器可能在IPv6上有问题。

然后我编辑了文件(sudo vi /etc/resolv.conf),并将IPv4移动到文件的第一个条目,在IPv6之前。重新启动模拟器,它工作了。

适用于苹果MacBook M1用户

自2022年2月1日起生效

  1. 打开Android模拟器
  2. 扩展的控制
  3. 然后转到代理 (Tab)下的设置,
  4. 取消 Use Android studio HTTP proxy setting
  5. 单击应用
  6. 重新启动 / 冷启动你的模拟器。

这将修复模拟器上的互联网连接问题。

一套无代理

enter image description here

2-invalidate缓存

enter image description here

3 .删除旧的模拟器并添加新的

我不知道这是否能帮助任何人,对我有用的是在模拟器的android设置上设置正确的(当前)日期和时间,看起来很奇怪。

解决这个问题最简单快捷的方法之一是 choose a device with API 29 or below,有一些关于互联网的更高API的问题。DNS的东西对我来说不起作用,所以我尝试降低设备API级别,chrome等开始工作。 然而,我的应用程序能够使用互联网,因为我们能够在更高的API上从BackEnd获取数据,但在测试其他一些功能时存在chrome问题

苹果MacBook M1

在m1 mac上,没有一个答案对我有效,我甚至无法连接到本地服务器的本地主机。

对我来说,诀窍是关掉手机数据& T-mobile;然后它会使用安卓wifi上网,一切都很好。

这是我的工作设置的截图: android network截图 < / p >