Android Studio - Android模拟器连接WiFi但无法上网

228

我试了一整天各种在SO和其他地方找到的解决方案,但都没能在Android模拟器上启用wifi。

有人可以帮忙想想办法如何在我的Android模拟器上启用网络吗?

我使用的是Nexus 5X API 27,目标为Android 8.1(Google Play),以及Nexus 5 API P,目标为Android 7.1.1。

我相信应该有方法可以在模拟器上启用网络,否则提供虚拟wifi的整个意义就成了浪费。

我正在使用Mac OS HS 10.13.4,直接连接到我的路由器,没有代理。

我甚至尝试删除所有AVD,重新安装它们。我甚至尝试安装了最新的Pixel 2,搭载着Oreo Android 8.1。

似乎什么都不起作用。有没有人遇到过这个问题并找到解决方法呢?

任何帮助都将是巨大的帮助。

谢谢,维克拉姆

更新:当我通过手机将计算机连接到热点wifi时,模拟器可以通过wifi访问互联网,但当我将计算机连接到家中的路由器时,则失败了。


我有同样的问题。它可以通过我的手机热点工作,但不能通过我的路由器工作。你用的是什么样的路由器?以前一切都很好,当我有一个AVM路由器时,但现在我有一个Telekom Speedport路由器,它不再工作了。 - TheBaj
1
@TheBaj:路由器的型号可能不是问题,但也有可能是问题,我不确定。尝试下面的解决方案,这对我有效。 - Vikram Mahishi
2
@VikramMahishi,请更新您的Android SDK模拟器。这对我很有效。 - Zala Janaksinh
2021年,Google/Android仍无法创建能够连接到互联网的模拟器。 - RunLoop
首先尝试手动重启模拟器(重新启动系统)。 - FJCG
显示剩余2条评论
41个回答

314

以下是适用于Windows和Mac的解决方案,但类似的解决方案也适用于任何操作系统:

  1. 在Windows上

    • 打开 网络和共享中心 并点击当前的 连接
    • 点击 属性
    • 双击 Internet Protocol Version 4 (TCP/IPv4)
    • 将首选DNS服务器和备用DNS服务器设置为以下内容(见下图):

      8.8.8.8
      8.8.4.4
      
  2. 在 Mac 上

    • 前往设置 > 网络 > 高级... > DNS
    • 删除任何已经存在的条目并添加以下两个条目(见下方屏幕截图):

  3. 8.8.8.8
    8.8.4.4
    

    注意:对于Mac用户,如果输入字段被禁用且无法编辑,请单击该窗口底部区域的“锁”图标并输入密码以进行更改

    重新启动模拟器,它应该解决:

    截图:

    1. Windows

    Android emulator not connecting to internet solution on windows

    1. Mac

    Android emulator not connecting to internet solution on a mac


    编辑:这是在模拟器的wifi将DNS更改为某些不起作用的DNS时的修复方法。虽然这通常有效,但也可能有其他原因,这种解决方案可能无法解决。


7
这个问题已经解决了,只需要重启模拟器即可。 - ben_joseph
2
实际上,输入任何有效的公共 DNS 服务器地址都应该可以工作,无需特别使用Google DNS。默认情况下,通常将您的路由器地址设置为DNS(或者没有设置,大多数系统会回退到您的路由器)。然后,您的路由器将根据其配置找出正确的DNS。但是,对于模拟器而言,这种方法不起作用,因为模拟器无法直接连接到您的路由器或将其用作DNS。因此需要一个静态的公共DNS IP。 - ubuntudroid
1
是的!关闭模拟器是必须的。感谢解决方案。 - Christian Mora
1
关闭并重新启动模拟器后,它对我起作用了。 - matthias_b_nz
1
对我也起作用了。谢谢! - petrrr33
显示剩余3条评论

206

我的解决方案是在Mac OSX 10.13上使用的。

我听说这是由于启用了LAN卡和WiFi引起的,并且一些方法对我来说似乎很复杂,所以我简单地尝试了一下,并且它起作用了:

  • 在笔记本电脑上禁用WiFi。
  • 关闭模拟器。
  • 在模拟器上进行冷启动(AVD Manager->在模拟器操作中->立即冷启动)。
  • 在笔记本电脑禁用WiFi的情况下重新启动后,模拟器显示正确的WiFi连接(模拟器仍然显示AndroidWifi但已连接到我的笔记本电脑Internet。WiFi符号现在看起来像这样: WiFi符号已连接
  • 然后我启用了笔记本电脑上的WiFi,一切正常运行。

3
这个方法行得通,我在“冷启动”之前进行了“数据擦除”,并需要在模拟器中配置WiFi,在主屏幕向下滑动时会有一个通知。 - Manuel
9
对我很有用!我刚刚进行了一次关闭WiFi的冷启动,它运行得非常好。 - Hasen
4
太棒了!谢谢!但对于我来说,我也不得不在模拟器上禁用并重新启用 Wi-Fi。 - James
5
这是比在您的计算机上修改全局 DNS 设置更好的解决方案。 - Tyler Wood
2
在经过无数个小时在互联网上搜索可行的解决方案却毫无结果之后,只需要关闭WiFi进行冷启动即可解决问题。 - yansusanto
显示剩余4条评论

184
无论您使用的是Windows还是MAC,您都不需要更改本地PC网络设置!
在2020年之后,旧的解决方案已经不再适用(使用Android Studio 4.1.2或更新版本)。问题出在模拟器的DNS设置上。仅仅更改本地PC上的DNS服务器已经不再有效。您需要在模拟器内部更改DNS设置。以下步骤适用于运行Android 11的模拟器。其他版本类似:
  1. 打开模拟器右侧弹出的扩展控制对话框。在对话框菜单中点击设置。在顶部点击代理,确保使用Android Studio Http代理设置已被勾选。我强调这一点是因为之前的解决方案中很多都说要取消勾选它。然而,在最新版本中,保持勾选状态效果更好。如果它之前没有被勾选,继续进行第2步之前重启模拟器。(注意:如果你的版本没有显示代理设置,则可以跳过此步骤。我们只是想确保代理设置已恢复为默认设置。)
  2. 在模拟器中导航至WiFi连接设置:主屏幕 -> 向上滑动 -> 设置 -> 网络与互联网 -> WiFi AndroidWifi -> 点击齿轮图标 -> 点击位于屏幕底部附近的高级下拉菜单 -> 向上滑动查看网络详细信息
  3. 查询DNS显示的内容。如果不是8.8.8.8,请按以下步骤修复。写下(或记住)在网络设置中显示的IP地址网关地址。我们需要这些IP地址以进行静态设置。
  4. 点击顶部的铅笔图标编辑网络详细信息。点击IP设置下拉菜单,将其更改为静态。然后输入步骤2中写下的IP地址网关。确保DNS 1是8.8.8.8,DNS 2是8.8.4.4。这些会自动填充。
  5. 关闭模拟器,并使用立即冷启动选项重新启动它。

这个方法对我有效,之前在这个页面和其他很多页面尝试过所有其他解决方案都没有成功。希望它对你也有用。


11
谢谢,它起作用了。现在应该是正确的答案。 - Jose Anibal Rodriguez
2
没关系,我应该取消“在工具窗口中运行”的勾选。 - AGamePlayer
2
按照步骤进行,发现 DNS 由于某种原因已更改。在按照您的步骤操作后,成功使其正常工作。 - Stephan Bakkelund Valois
2
谢谢您的回答! - Stepan Parunashvili
2
曾在 Android 模拟器 31.1.4 和 Android Studio Arctic Fox | 2020.3.1 Patch 4 上工作。 - npace
显示剩余15条评论

48
@TheBaj:我找到了这个问题并解决了它。问题在于当你通过路由器连接时,仿真器中的androidwifi使用设置,并将DNS设置为8.8.8.8以外的其他内容(我认为这是androidwifi获得Internet访问的强制性设置)。但是,如果我更改网络设置中的DNS,将无法下载获取您的依赖项,尤其是从jcenter() 下载的依赖项的Google服务插件,因此同步会失败,最终导致构建失败。

因此,诀窍在于在默认路由器设置之后配置您的Google DNS(8.8.8.8) - 这部分负责从jcenter()下载依赖项,同步和构建成功。

现在从终端使用emulator @Nexus_5X_API_27 -dns-server 8.8.8.8命令启动仿真器,该命令会强制仿真器使用8.8.8.8作为其DNS,仿真器将具有互联网。

我正在开发一个React Native应用程序,所以对我来说,Android Studio是不必要的,我已经配置了我的bashrc以按以下方式启动不同的仿真器。

   function emunex5 {
    emulator @Nexus_5X_API_27 -dns-server 8.8.8.8
 }

  function emunex6 {
    emulator @Nexus_6_API_27 -dns-server 8.8.8.8
  }

  function emupix {
    emulator @Pixel_XL_API_27 -dns-server 8.8.8.8
   }

所以从一个终端启动我选择的模拟器,然后在另一个终端上运行构建,在启动的模拟器上运行我的应用程序,而我的可怕的模拟器可以访问互联网。 :)

试试这个,希望能有所帮助。

谢谢, Vikram


"模拟器" 不被识别为内部或外部命令、可执行程序或批处理文件。 - Bhupesh
1
@Bhupesh 请查看 %HOME%\AppData\Local\Android\Sdk\emulator - 这就是我找到它的地方。 - t3chb0t

29

在 macOS 上:

  1. 打开 系统偏好设置 中的网络选项。
  2. 从左侧选择当前网络,然后点击 高级...
  3. TCP/IP 选项卡下的 配置 IPv6(位于其中)从 自动 更改为 仅本地链路
  4. 重新启动您的模拟器。

1
如果这不会在主机Mac上破坏IPv6就好了:( - der_michael
它适用于最新的Mac OS。 - Sandeep Duve

22

Windows解决方案:

  1. 前往你的Android SDK位置,例如:C:\Users\shehzad\AppData\Local\Android\Sdk\emulator
  2. 在同一位置打开命令提示符。输入以下命令:emulator -avd Nexus_4_API_29 -gpu host -dns-server 8.8.8.8。这里的Nexus_4_API_29是你的模拟器设备名称(你可以从Android Studio->AVD Manager中找到设备列表)。此命令将运行指定设备并使Wi-Fi连接互联网。

希望这能有所帮助。


1
是的,这个方法只对我有效。之前它显示已连接,但无法上网。在实施了您的解决方案后,它开始正常工作了。 - ashishdhiman2007
@ashishdhiman2007 很高兴听到你使用了我的解决方案解决了问题 :) - Shehzad Osama
最好和最简单的答案,也是唯一对我起作用的答案。 - curious coder
@curiouscoder 听起来不错 :) - Shehzad Osama
1
Ubuntu 22.04 - 唯一可行的解决方案 - /home/{USER}/Android/Sdk/emulator/emulator -avd {AVM_NAME} -gpu host -dns-server {DNS_IP}; 感谢 @Shehzad - Abd-Elaziz Sharaf
lint!到2023年,它仍然对MasOS Ventura 13.4有效。 - 象嘉道

16

我的开发环境是在Mac 11.3.1 Big Sur上运行的Android Studio 4.2.0。

步骤0.我关闭了所有模拟器,并且也关闭了Android Studio。

步骤1.然后我打开了Android Studio。AVD管理器-> 立即冷启动 输入图片描述

步骤2.在模拟器上关闭Wifi。接着LTE就可以工作了。 输入图片描述

步骤3.(可选)顺便提一下,我的Mac网络DNS设置为: 输入图片描述

如果步骤0 -> 步骤1 -> 步骤2不能正常工作,你可以像步骤3一样设置DNS。然后再次执行步骤0 -> 步骤1 -> 步骤2。这样它就能正常工作了。


14

我遇到了和你一样的问题,按照以下步骤解决了它。

步骤:

  1. 进入模拟器设置
  2. 选择代理选项卡
  3. 然后勾选“使用Android Studio HTTP代理设置”选项
  4. 点击应用


这不是默认设置。谢谢。 - Aada

14
在Mac OSX(我的版本是Catalina)上,问题是由于模拟器会自动从/etc/resolv.conf文件中查找并选择第一个名称服务器引起的,对于我来说是IPv6地址。来源:https://developer.android.com/studio/run/emulator-networking#dns 只需编辑文件(sudo vi /etc/resolv.conf),并将IPv4地址(在我的情况下为192.168.1.1)移至第一位,放在IPv6地址之前即可。就是这样简单。

谢谢,这个对我有效。我使用的是macOS Catalina 10.15。 - EJ Sulit
我不得不重新启动模拟器,然后它立即工作了... 这只是因为我现在拥有IPV6 :( - Hugo Logmans

11

我已经在网络适配器上使用了Google DNS解决方案:8.8.8.88.8.4.4

Windows下Android模拟器连接WiFi但无法上网的解决方案


希望这个问题已经被报告了,因为我也花了一些时间。 - Renetik

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