我已经浪费了一整天的时间尝试在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上直接连接到没有代理的路由器。
我甚至尝试删除所有avds,重新安装它们。我甚至尝试使用Oreo Android 8.1安装最新的Pixel 2
似乎没有什么工作。有人遇到过这个问题并找到了解决方案吗?
任何帮助都会有很大的帮助
谢谢,维克拉姆
更新:当我通过手机连接我的电脑作为热点wifi时,模拟器通过wifi连接互联网,但是当我将计算机连接到家用路由器时它失败了。
以下是windows和mac的解决方案,但类似的解决方案适用于任何操作系统:
8.8.8.8
8.8.4.4
8.8.8.8
8.8.4.4
注意:对于Mac用户,如果条目字段已禁用且您无法对其进行编辑,请单击该窗口底部区域中的“锁定”图标并输入密码以进行更改重新启动模拟器,它应该解决:
截图:
编辑:这是当模拟器的wifi已将DNS更改为8.8.8.8以外的其他情况时的修复。虽然这在大多数情况下都有效,但可能还有其他原因可能无法解决此问题。
@TheBaj:我想到了这个问题并修复了它。问题是当你通过路由器连接时,你的模拟器中的androidwifi使用设置并将DNS设置为8.8.8.8以外的其他东西,这是谷歌DNS(我认为这是androidwifi获得互联网的强制性设置访问)。但是,如果我在我的网络设置中更改DNS,那么获取依赖关系的google-services插件(尤其是从jcenter()
下载的依赖关系)将不会被下载,因此您的同步将失败,最终导致您的构建失败。
所以诀窍是你的默认路由器设置后你的网络设置中配置了你的谷歌DNS(8.8.8.8) - 这部分负责从jcenter()
下载依赖项,同步和构建成功。
现在从终端启动带有emulator @Nexus_5X_API_27 -dns-server 8.8.8.8
命令的模拟器,强制模拟器使用8.8.8.8作为其DNS,模拟器将具有互联网。
我正在研究一个本机应用程序,所以对我来说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
}
所以从一个终端我启动我选择的模拟器,然后在另一个终端上运行构建,该终端在启动的模拟器上运行我的应用程序,我的FREAKING EMULATOR有互联网访问。 :)
试试这个,我希望这会有所帮助。
谢谢,维克拉姆