Android模拟安装之后,无需特殊设置,只要运行模拟器的主机能够上网,模拟器应该是能够正常上网的。但是有时会碰到模拟器无法上网的情况。基本上可以确认是DNS的原因造成的。
主要就是使用adb shell命令,进入模拟器的命令上设置,然后使用setprop net.dns1 192.168.1.1这个命令,来设置模拟器的dns服务器。按照这种方法试了一下问题还是没有解决。索性重装了一下SDK,问题依然没有解决。这是想 到了一个办法,抓包看看为什么模拟器上dns查询会出错,运行模拟器的windows系统上,不会出错。
首先在用模拟访问了一个网站,dns的结果如下,这次查询是失败的:
然后又在windows上访问了一下同样的网站,dns查询的结果如下:
问题出来了,主机跟模拟器使用的不是同一个dns服务器,一个是192.168.91.2,一个是 192.168.4.4。为什么会这样了,马上想到了网络配置,是可以选择首选的dns服务器,备用的dns服务器的。使用ipconfig看了一下,果 然windows使用的是备用的dns服务器,android 模拟器使用的是首选的dns服务器。
在有多个dns服务器时,windows会在查询失败后再次使用备用的dns服务器来查询域名,Android为什 么只读取了主机上首选dns的配置,没有读取备用的dns配置,这点没有深挖,有兴趣的可以深挖一下。不过这个问题解决起来就很简单了,只要在主机的网络 设置里把首选和备用的dns配置顺序修改一下就好了。