前言

Android 模拟器可以运行,但是不能连接网络,事实上这是第二次遇到这个情况了,第一次是在公司,​​Windows​​​系统,当时的处理方式是直接禁用了​​IPV6​​​,最近又遇到了,这次是​​mac​​系统,但是距离上次已经好久了,所有又耽搁了点时间解决,所以决定搞清楚并解决这个问题。

出现异常

首先最直接的就是会给你报异常:

java.net.UnknownHostException: 
Unable to resolve host "***.***.com": No address associated with hostname

剖析问题

很明显是直接不能连这个地址了,不是超时,也不是404什么的。

鉴于人性,首先怀疑服务器崩了…
测试,pc访问是可以的。
那好吧,再从自身找毛病。

  • 首先可以确定的是,跟电脑系统没有关系,上次是Windows,这次是mac,都遇到了。并且电脑也是有网的,可以打开网页测试。
  • 其次我们的程序,也就是代码也是没有问题的,这个只能自己确定,是否有联网权限什么的,请求地址是否正确什么的。
  • 然后我们有的人可能会排查到Android studio 或者模拟器上面,这里的步骤可能会有但不限于​​清除缓存​​、​​重启as​​,​​重建模拟器​​等操作。
  • 最后我们会定位到​​模拟器​​这里,如图
    Android 模拟器不能连网?_android
    状态栏的​​wifi​​标志是有个小​​x​​的,设置里面也显示​​已连接但无法访问​​,ok,总算找到问题了,原来是模拟器不能连网。

网上搜一波解决方案都是改DNS、禁用代理什么的,而且有的改了还没用,最后还是​​FQ​​找到的办法。

解决方案

好了啰嗦了半天了,终于到解决办法了。

简而言之,Android模拟器​​7.0及以后​​​都可能会出现这种问题,为什么会是​​可能​​​呢,这就要取决于你的网络是不是有​​ipv6​​了,有就一定会,所以第一个解决方案也就来了:

1、禁用IPV6

不同的系统有不同的禁用方式,这个要自行解决。

2、创建7.0以下的模拟器

因为7.0以下的模拟器用的是你电脑的网,而不需要在模拟器里面设置。