I know that similar questions have been asked before, but my problem is new only after installing Android Studio 2.3, the latest version in March 2017. I have several years experience developing Android applications, and I have never encountered this problem before. After upgrading to version 2.3 of Android Studio, my emulator is no longer able to access the internet. I even uninstalled/reinstalled Android Studio 2.3 from scratch and created a new emulator, and I am still getting the same error. This is not an app problem. I can't even access the internet from Chrome, and I wasn't having this problem last week. The message that I get says that the server DNS address could not be found -- DNS_PROBE_FINISHED_BAD_CONFIG. The only thing that has changed on my computer in the last week is the new version of Android plus possibly updates to Windows 10. And yes, my computer has access to the internet. Below is an image of my emulator when I try to use Chrome to search for "Google".
我在升级到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上找到了一篇文章,指出问题是模拟器试图使用一个断开连接的网络适配器。对我来说,这个问题是在我连接到局域网时发生的。禁用无线局域网适配器解决了这个问题。
禁用适配器。
导航到网络连接 找到适配器 右键单击并选择禁用
这发生在我身上时,模拟器冻结,我必须杀死进程。信号图标总是显示屏幕截图中的小“x”,没有网络连接成功。
唯一有帮助的是卸载和重新安装模拟器(不是AVD图像)
在Android Studio中:
工具-> Android -> SDK管理器 取消选中“Android模拟器”,让它卸载,然后再次检查,让它重新安装。
这是一个问题,我上次模拟器更新自己,然后禁用其他网络适配器修复它。现在它又突然出现了,但唯一启用的适配器是一个wifi适配器,所以我没有什么可以禁用的。
在我通过提示更新模拟器工具到26.1.1之后,这个问题才再次出现。我通过SDK Tools更新选项卡卸载并重新安装了模拟器,幸运的是,现在重新安装时唯一的选择是安装26.0.3(似乎工作正常)。
这个故事的寓意是要非常小心模拟器更新。
对我来说,这个问题是因为我把笔记本电脑带回家时没有重新启动模拟器。据我所知,当模拟器启动时,它会读取你PC的DNS设置并使用它们。当我在家庭网络上时,我的工作DNS设置失败了。 是的。重新启动模拟器就解决了我的问题。
我也有这个,我通过创建新的android模拟器虚拟设备解决了这个问题,并选择了Nexus 4 api 27。在我创建Pixel设备api 28之前,即使在重新创建设备后,它也无法工作。所以我尝试了完全不同的配置和Android模拟器有互联网连接的预期。其他的解决方案对我来说都不奏效,但我并没有尝试所有的方法。
我也面临着同样的问题,但我试图通过各种帖子来解决这个问题。今天我发现了这个问题。问题很可能出在你的电脑配置上,而不是Android Studio和Android模拟器。
问题来自您的网络设置。只要将主DNS服务器设置为8.8.8.8,就可以解决问题。
android浏览器是否可以访问Internet 你可以从终端运行模拟器 通过此命令
然后进入SDK路径
$ /工具/ avd模拟器 下一个是5x_api_23 -netdelay no -netspeed full
它解决了你的网络问题…
首先尝试“冷启动”模拟器,建议在这里。 如果冷启动不起作用,请尝试将网络的DNS地址更改为8.8.8.8(谷歌的DNS)或其他您喜欢的DNS:
MacOSX:
打开“系统首选项” 点击“网络” 选择你的电脑所连接的网络,然后点击“高级” 选择“DNS”,选择“+”按钮,输入“8.8.8.8”(谷歌的DNS),或者如果你喜欢OpenDNS,“208.67.222.222” 选择“确定”和“应用”
Windows和Linux:
https://developers.google.com/speed/public-dns/docs/using
之后,关闭模拟器并重新启动它。
我使用的是android studio 3.1,它就发生了。 通过重新启动adb服务器解决了这个问题
$ adb kill-server
$ adb start-server
希望能有所帮助。谢谢你!
打开Android模拟器,进入扩展控件。然后进入setting => proxy(Tab),取消勾选“Use Android studio HTTP proxy setting”,点击“Apply”。
在尝试了许多这些解决方案之后,我打算删除我当前的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是另一个命名选项。
决定(编辑)
对于那些说为什么不擦除数据重新启动的人。 你每次重启电脑时都重新格式化吗?擦除模拟器上的数据就像对手机进行出厂重置或重新格式化PC上的硬盘驱动器并重新安装操作系统。除非数据完全损坏,否则这是不必要的。
当你关闭模拟器并重新启动它时,它就像将你的电脑置于休眠或睡眠模式。记忆不是被抹去,而是被保存。
冷启动和重启手机或电脑是一样的。它可以重置内存并重新加载。这允许网络模拟以干净的内存启动并正确连接。
所以,不要擦除数据。只是冷启动。如果还是没用,那就擦一下,但要留作最后的手段。
有同样的问题与我的模拟器,做了上面的一切,但没有工作。 更改我的默认网关 控制面板->网络和共享中心->本地连接设置: 192.168.1.119到192.168.1.1在我这里工作。 我不知道这个IP地址是如何工作的,但也许它会节省一些人的时间和挫折。
我有同样的问题,我解决了以下步骤:-
转到模拟器设置,然后转到
设置->代理->手动配置或使用Tick使用Android Studio HTTP代理模拟器。
请投票,如果这对你有用的话
专业提示:在Linux上使用AVD和dnsmasq
要理解你,请阅读从Android Studio设置Android模拟器网络。
被模拟设备的环回为127.0.0.1,可以从10.0.2.2访问被模拟设备的主机环回。
在启动时,模拟设备通过从/etc/resolv.conf中的主机中选择DNS名称服务器来设置它的DNS名称服务器。
但重点是,如果你正在使用dnsmasq,你setnameserver 127.0.0.1in/etc/resolv.conf ',所以模拟设备将击中它自己的环回,那里没有任何运行,而不是主机环回,那里有一个DNS服务器运行。
在命令行下运行AVD时,需要添加-dns-server。
例如:
云耀斑DNS: ~/Android/Sdk/模拟器- avdk_nexus_9_api_23 - DNS -服务器1.1.1 主机dnsmasq: ~/Android/Sdk/模拟器- avdd Nexus_9_API_23 -dns-服务器1.0.2.2
对于这个问题,我有一个简单而永久的解决方案。
进入网络和互联网选项->
点击以太网或wifi(你连接的)选项->
单击更改适配器选项->
右键单击已连接的网络。
将打开一个对话框,只需单击Internet协议版本(TCP/IPv4)选项。
弹出另一个对话框,忽略第一组IP地址(保持不变),单击“使用以下DNS服务器地址:”单选按钮,在“首选DNS服务器:”和“备选DNS服务器”中分别输入8.8.8.8和8.8.4.4:
现在你可以随时打开你的模拟器,你会得到互联网在安卓模拟器。
对我来说,在OSX上,这是因为使用第三方VPN解决方案…它安装了一些avd和Genymotion无法通过的网络钩子。必须卸载它才能正常工作。在某些网络上工作得很好,而在其他网络上则不行……很奇怪…
我在android模拟器V 7.1.1中遇到了同样的网络连接问题,然后我在我的android模拟器中将android版本降低到7.1.1以下,然后它的工作正常。
我在Windows 10上也遇到了同样的问题。我刚刚进入网络和互联网设置>更改适配器选项>右键单击Wi-Fi并选择属性>在列表中选择internet协议版本4并单击属性>打开“使用以下DNS服务器地址”并填写第一部分“8.8.8.8”地址。 问题解决了!
Android 9+模拟器适合我,但Android 7不能连接到互联网。
我办公室用的是小飞贼应用防火墙。我把它关掉了,Android 7运行正常。检查一下防火墙可能是个好主意。
如果你使用代理,下面的代码可能会有用:
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
Mac用户[UPDATE 2022
针对的不是苹果芯片用户
系统设置 网络 WiFi >选择“高级” 从高级选择DNS选项卡 添加DNS服务器8.8.8.8 模拟器必须在添加DNS服务器后重新启动(感谢@kapusch)
苹果硅用户
@bourdier-jonathan 你可以在这里修复硅的问题: 在arm64-v8a最后一次更新后,模拟器在M1 Mac上出现脱机
通过将您下载的AVD系统映像替换为r02映像。因为r03 r04 r05在m1上都不起作用
请点击下面的链接。
https://developer.android.com/studio/run/emulator-networking
打开模拟器,点击更多…,然后单击“设置和代理”。从这里,您可以定义自己的HTTP代理设置。
输入主机名 执行> cmd > hostname
最后,通过chrome浏览器或谷歌检查模拟器内部的网络访问。
注意:经常擦数据就会清除这个问题。请遵循所有步骤
在最新的Mac与Jio IP6配置问题,它阻止互联网上的android模拟器,所以从android虚拟设备管理器模拟器列表操作列下拉选择选项“冷启动现在”修复了这个问题。我面对这个问题后,我保持不变,它为我工作。
如果您的网络上有PiHole,请确保您的Pi正在工作,并且您可以访问PiHole的web UI。每一次,当我的模拟器突然无法连接到互联网时,都是因为它们中的任何一个出了问题。
MacOS解决方案,不为整个机器使用自定义DNS
步骤1
找到Android Studio在Android SDK中使用的模拟器可执行文件,并将其重命名为simulator -original。
我的位于/usr/local/share/android-sdk/emulator/emulator,但它可能会根据个人设置而有所不同。
步骤2
在包含以下命令的原始文件(或使用您选择的DNS服务器)的位置添加一个名为emulator的新文件。
#!/bin/bash
$0-original "$@" -dns-server 8.8.8.8
步骤3
使新的模拟器文件可执行。
chmod +x emulator
步骤4
使用Android Studio重新启动模拟器。
在过去的8个小时里,我一直在想办法解决这个问题。事情发生在我家停电之后。我的模拟器将不再连接到我的电脑的互联网。我试了所有的解。将DNS更改为8.8.8.8有效,但我不想将所有流量路由到谷歌。
最终奏效的是。我知道这很疯狂,但是拔掉我的wifi路由器/调制解调器。一个快速拔插修复了这个问题。在这个SO问题和其他5个问题上,我用尽了一切办法。我甚至重新下载了Android Studio和模拟器。这些都没用。试着拔掉你的路由器/调制解调器。
窗户 在所选网络连接的“TCP/IP属性”窗口中指定DNS设置。
举例:在Windows 10操作系统下修改DNS服务器设置
进入控制面板。 单击“网络和Internet”>网络和共享中心>更改适配器设置。 选择需要配置谷歌Public DNS的连接。例如:
要更改以太网连接的设置,右键单击以太网接口,选择“属性”。 要更改无线连接的设置,右键单击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设置在“网络”窗口中指定。
举例:在macOS 10.15操作系统下修改DNS服务器设置
Click Apple menu > System Preferences > Network. If the lock icon in the lower left-hand corner of the window is locked, click the icon to make changes, and when prompted to authenticate, enter your password. Select the connection for which you want to configure Google Public DNS. For example: To change the settings for a Wi-Fi connection, select Wi-Fi, and click Advanced. To change the settings for an Ethernet connection, select Built-In Ethernet, and click Advanced. Select the DNS tab. Click + to replace any listed addresses with, or add, the Google IP addresses at the top of the list: For IPv4: 8.8.8.8 and/or 8.8.4.4. For IPv6: 2001:4860:4860::8888 and/or 2001:4860:4860::8844. For IPv6-only: you can use Google Public DNS64 instead of the IPv6 addresses in the previous point. Click OK > Apply. Test that your setup is working correctly; see Test your new settings. Repeat the procedure for additional network connections you want to change.
Linux 在大多数现代Linux发行版中,DNS设置都是通过网络管理器配置的。
举例:修改Ubuntu的DNS服务器设置
Click System > Preferences > Network Connections. Select the connection for which you want to configure Google Public DNS. For example: To change the settings for an Ethernet connection, select the Wired tab, then select your network interface in the list. It is usually called eth0. To change the settings for a wireless connection, select the Wireless tab, then select the appropriate wireless network. Click Edit, and in the window that appears, select the IPv4 Settings or IPv6 Settings tab. If the selected method is Automatic (DHCP), open the dropdown and select Automatic (DHCP) addresses only instead. If the method is set to something else, do not change it. In the DNS servers field, enter the Google Public DNS IP addresses, separated by a comma: For IPv4: 8.8.8.8 and/or 8.8.4.4. For IPv6: 2001:4860:4860::8888 and/or 2001:4860:4860::8844. For IPv6-only: you can use Google Public DNS64 instead of the IPv6 addresses in the previous point. Click Apply to save the change. If you are prompted for a password or confirmation, type the password or provide confirmation. Test that your setup is working correctly; see Test your new settings. Repeat the procedure for additional network connections you want to change. If your distribution doesn't use Network Manager, your DNS settings are specified in /etc/resolv.conf.
举例:在Debian服务器上修改DNS服务器设置 编辑/etc/resolv.conf:
sudo vi /etc/resolv.conf
如果出现任何命名服务器行,请写下IP地址以备将来参考。
用或添加以下行替换命名服务器行:
IPv4:
nameserver 8.8.8.8
nameserver 8.8.4.4
For 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日起生效
Android模拟器 转到扩展控制。 然后进入代理(Tab)下的设置, 使用Android studio HTTP代理设置 单击Apply 重新启动/冷启动模拟器。
这将修复模拟器上的互联网连接问题。
解决这个问题最简单快捷的方法之一就是 选择API为29或以下的设备,对于互联网来说,更高的API会有一些问题。DNS的东西对我来说不起作用,所以我尝试降低设备API级别,chrome等开始工作。 然而,我的应用程序能够使用互联网,因为我们能够在更高的API上从后台获取数据,但有chrome测试其他一些功能的问题。
苹果MacBook M1
在m1 mac上,没有一个答案对我有效,我甚至无法连接到本地服务器的本地主机。
对我来说,诀窍是关掉手机数据“T-mobile”,然后它就会使用安卓wifi上网,一切都很好。
这是我工作设置的截图:
对我来说,我在模拟器中打开连接设置,断开了Android WiFi。然后在这个里面,我按了忘记连接。现在再次连接到相同的WiFi解决了这个问题。我认为这是解决问题的最快方法!
推荐文章
- 如何隐藏动作栏之前的活动被创建,然后再显示它?
- 是否有一种方法以编程方式滚动滚动视图到特定的编辑文本?
- 在Android中将字符串转换为Uri
- 如何在NestedScrollView内使用RecyclerView ?
- 移动到另一个EditText时,软键盘下一步点击Android
- Android应用中的GridView VS GridLayout
- Activity和FragmentActivity的区别
- 右对齐文本在android TextView
- 权限拒绝:start前台需要android.permission.FOREGROUND_SERVICE
- 如何更改android操作栏的标题和图标
- Android Split字符串
- 让一个链接在安卓浏览器启动我的应用程序?
- 如何在Android工作室的外部库中添加一个jar ?
- GridLayout(不是GridView)如何均匀地拉伸所有子元素
- 如何让一个片段删除自己,即它的等效完成()?