问题
Android Studio模拟器中app可以正常使用网络,但是内嵌的H5无法连接网络。
使用Android Studio开发时经常使用其自带的模拟器进行app模拟和仿真,并且可以使用模拟器创建android各种版本的模拟器设备来测试自己的app是否可以兼容运行。但是如果需要使用网络时就会发现无法正常上网,打开浏览器输入网址时不能打开。
通过搜索资料可以发现是模拟器的DNS问题,模拟器默认的DNS是10.0.2.3这种,这个DNS电脑是无法ping通的,因此无法对域名进行解析也就无法访问网址,如果是直接输入ip地址的话是可以访问的,比如输入百度的ip地址14.215.177.39进行访问,此时是可以访问的。如果直接输入ip也无法进行网络访问的话,那么可能本身的网络就有问题需要先检查一下自己电脑的网络问题。
解决
针对这个问题网络上有挺多的解决方法的,一般都是说用命令行来启动模拟器,启动的时候通过命令行来指定dns,但是这个方法不是很好用,我还是习惯了直接用android studio来启动模拟器。
这里分享一个在模拟器启动后设置dns实现一劳永逸的方法,启动模拟器后wifi会默认连接一个叫AndroidWifi的热点,此时点击这个热点进去查看详情,我的连接详情如下。我们需要记录下IP地址和网关,每个人的都不太一样,我这个是Pixel 2 API 28的模拟器,不同的模拟器版本操作方法可能不完全一样,大家可以参考。
然后修改AndroidWifi的网络设置,我的模拟器是点击右上角的编辑图标就可以进行网络设置,将IP地址修改为static(静态),然后将刚刚记录的ip地址和网关输入进去,DNS可以输入自己电脑的DNS,如果自己电脑的DNS不是IPv4地址的话就可以使用网络上公用的DNS,输入完成后点击保存。
此时需要将WiFi进行关闭,然后重新打开,等待连接AndroidWifi完成后应该就有internet了,之前的no internet文字就消失了。如果重启WiFi后还是没有网络的,可以多次重启然后多等一会看看是否有网络。
可以打开浏览器输入www.baidu.com进行测试是否可以访问网络。通过这个方法设置后就不需要每次启动模拟器都重新设置DNS,相比较用命令行来启动模拟器的方法更加的方便。