前言
Android 模拟器可以运行,但是不能连接网络,事实上这是第二次遇到这个情况了,第一次是在公司,Windows系统,当时的处理方式是直接禁用了IPV6,最近又遇到了,这次是mac系统,但是距离上次已经好久了,所有又耽搁了点时间解决,所以决定搞清楚并解决这个问题。
出现异常
首先最直接的就是会给你报异常:
java.net.UnknownHostException: Unable to resolve host "***.***.com": No address associated with hostname
剖析问题
很明显是直接不能连这个地址了,不是超时,也不是404什么的。
鉴于人性,首先怀疑服务器崩了…
测试,pc访问是可以的。
那好吧,再从自身找毛病。
- 首先可以确定的是,跟电脑系统没有关系,上次是Windows,这次是mac,都遇到了。并且电脑也是有网的,可以打开网页测试。
- 其次我们的程序,也就是代码也是没有问题的,这个只能自己确定,是否有联网权限什么的,请求地址是否正确什么的。
- 然后我们有的人可能会排查到Android studio 或者模拟器上面,这里的步骤可能会有但不限于清除缓存、重启as,重建模拟器等操作。
- 最后我们会定位到模拟器这里,如图
状态栏的wifi标志是有个小x的,设置里面也显示已连接但无法访问,ok,总算找到问题了,原来是模拟器不能连网。
网上搜一波解决方案都是改DNS、禁用代理什么的,而且有的改了还没用,最后还是FQ找到的办法。
解决方案
好了啰嗦了半天了,终于到解决办法了。
简而言之,Android模拟器7.0及以后都可能会出现这种问题,为什么会是可能呢,这就要取决于你的网络是不是有ipv6了,有就一定会,所以第一个解决方案也就来了:
1、禁用IPV6
不同的系统有不同的禁用方式,这个要自行解决。
2、创建7.0以下的模拟器
因为7.0以下的模拟器用的是你电脑的网,而不需要在模拟器里面设置。