Android模拟器不能上网的解决方法

我原来一直不用Android的模拟器,因为这东西的多年前的印象真的是很糟糕——启动半个小时,不支持OpenGL。即使后来有了x86镜像,在HAXM的支持下快的飞起,也不想用,因为NDK还要编译x86的。那个时候我一直用网易的MuMu模拟器——只需要编译Armv7的就行了。再后来就是网易的全部Mac App不知道抽了什么风,疯狂写log,直到写满硬盘为止,我就把MuMu给删了,同时也摆脱了这玩意动不动就启动不起来的烦恼。

现在的Android模拟器还是不错的,那就用一下吧。

在Mac上HAXM是不需要装的,即使装了也没用。

https://docs.microsoft.com/zh-cn/xamarin/android/get-started/installation/android-emulator/hardware-acceleration?pivots=macos

先装了一个Oreo(Google Play),什么鬼,用了10G的磁盘空间,即使禁止热启动也没小多少,然后居然不能上网!网上一查,都是说要改DNS,还要root。

好吧,我知道Google的套件就是费空间,装个干净的吧,Q(Android 9.+),反正我也不用Google API,这回好些了,占用4G磁盘。

然后我又装了一个Android 6.0的镜像,占用5.2G磁盘,Android果然是垃圾堆——你会发现随着Android版本的增加,占用磁盘越来越少——或者说Google把原来的福利套件都移除了?

关键是,这个能直接上网!

比较一下就能发现,Android 6.0的镜像没有虚拟WiFi,直接用宿主机来上网

而从Android 7.0开始,虚拟了一个NAT网络,以下截图是Android 9.+的

所谓的改DNS的原因就是如下:

理由就是,这是个什么见鬼的DNS,反正改一下就能上网了……

但是,即使我认为Android再垃圾,我也不认为测试团队能让这种事情发生——不能上网,并且从7持续到了9。并且,即使改DNS能解决问题,也不是个好方法——如果指向局域网的DNS(基本上就是网关或者路由器的地址),当你换一个环境难道再改一次DNS?

那么这个奇怪的DNS是什么,因为Android的官网不好打开,我复制了一下相关内容:

At startup, the emulator reads the list of DNS servers that your system is currently using. It then stores the IP addresses of up to four servers on this list and sets up aliases to them on the emulated addresses 10.0.2.3, 10.0.2.4, 10.0.2.5 and 10.0.2.6 as needed.

On Linux and OS X, the emulator obtains the DNS server addresses by parsing the file /etc/resolv.conf. On Windows, the emulator obtains the addresses by calling the GetNetworkParams() API. Note that this usually means that the emulator ignores the content of your "hosts" file (/etc/hosts on Linux/OS X, %WINDOWS%/system32/HOSTS on Windows).

When starting the emulator at the command line, you can also use the -dns-server <serverList> option to manually specify the addresses of DNS servers to use, where <serverList> is a comma-separated list of server names or IP addresses. You might find this option useful if you encounter DNS resolution problems in the emulated network (for example, an "Unknown Host error" message that appears when using the web browser).

意思就是,模拟器会把宿主机的DNS依次复制到10.0.2.3,10.0.2.4,10.0.2.5,10.0.2.6,按理说这么做没问题啊。于是我打开了系统的DNS

但是我的/etc/resolv.conf是这个样子的,难道IPv6优先?系统信息里明明IPv4的地址在前面。

原因就很明显了,那个IPv6的DNS是什么鬼,然后我把路由器的IPv6的功能一关,重连WIFI,重启模拟器,问题解决了。

总结:现在国内的IPv6一团麻,根本不知道是个什么情况,干脆先禁用一阵子。

原文地址:https://www.cnblogs.com/yunteng/p/11044589.html

时间: 2024-08-30 03:34:02

Android模拟器不能上网的解决方法的相关文章

android模拟器没有键盘的解决方法

刚开始使用android模拟器的时候,发现自己创建的AVD启动后没有出现侧边的键盘,在网上搜索后,发现很多人都有这个问题,也有文章说直接使用PC上的键盘,因为有对应的快捷键.但是,没有键盘,始终不爽! 问题的原因在于自定义AVD时没有选择built-in的skin导致的,编辑相应的AVD,选择built-in的skin 原文链接: http://blog.csdn.net/leisure512/article/details/6733023

关于android模拟器emulator-5554 disconnected错误解决方法

打开Eclipse的IDE: 1.1 英文原版 window -> Show Views -> device -> view menu -> Reset adb 1.2 中文版 窗口(W) -> 显示视图(V) ->Devices -> 视图菜单 ->Reset adb 设置完重启下模拟器即可,可能一段时候后又出现,再这样设置一下就行

Android应用插件式开发解决方法

Android应用插件式开发解决方法 一.现实需求描述 一般的,一个Android应用在开发到了一定阶段以后,功能模块将会越来越多,APK安装包也越来越大,用户在使用过程中也没有办法选择性的加载自己需要的功能模块.此时可能就需要考虑如何分拆整个应用了. 二.解决方案提出 一般有两种方式,一种是将应用按照功能分拆成多个应用,用户需要哪个就下载哪个,都需要就都下载.应用之间,可以在代码层面做一定的关联,以共享部分信息.另一种方式,类似于其他平台插件的方式,用户可以在主应用中可以选择性的下载需要的插件

android studio 更新 Gradle错误解决方法(Gradle sync failed)

android studio 更新 Gradle错误解决方法 Android Studio每次更新版本都会更新Gradle这个插件,但由于长城的问题每次更新都是失败,又是停止在Refreshing Gradle Project ,有时新建项目的时候报 Gradle Project Compile Error 等等相关的问题 解决这些问题办法是 首先打开android studio项目 找到项目目录gradle\wrapper\gradle-wrapper.properties这个文件 内容如下

Android SDK下载速度慢的解决方法(简单使用代理)

相信做android开发的同学们,一定会遇到的问题就是google那边经常崩,但是学习的开始,我们又必须要用Android SDK,(几个G的大小),一般我们装完ADT之后(如果你用的是Eclipse,android studio的就不需要了.),这时候我们需要打开SDK Manager来下载Android SDK的一些工具,还有android不同版本的内容.但是你会发现速度慢得惊人.原因就是Google. 本来不想因为这个东西写一篇博文的,但是因为怕刚开始学android的人会在上面浪费很多时

在沙箱中IE不能上网的解决方法

最近在解决一个问题,在我们的沙箱中IE不能上网 现象: IE不能上网,输入www.baidu.com 提示:不能查找到DNS.也不能ping 通 其他浏览器上网没有问题(SG浏览器,Chrome ,firefox,猎豹,360) 为什么IE不能上网呢? 解决: 在应用层挂调试IE,在ws2_32!socket 下断点,发现 socket 不能创建成功.然后发现首先需要访问 qurl.f.360.cn ,然后再访问www.baidu.com 那么难道我访问网址需要经过qurl.f.360.cn过滤

VMware虚拟机的CentOS无法上网的解决方法

前言:由于Linux下很多软件安装必须网络环境下进行,因此,对于如何在VMware下进行上网,我折腾了至少三天,今天上午,也即五一劳动节,终于搜到一遍技术文章,经过自己实践,VMware下Linux的可以上网啦. VMware虚拟机的CentOS无法上网的解决方法 本人在虚拟机中安装了CentOS,按照安装Windows XP的经验,想要CentOS可以上网,发现居然上不了.找百度一些大神的方法,终于解决了问题. 流程如下: 1)点击 VM->Settings Hardware选项卡下面 2)点

Android应用插件式开发解决方法[转]

一.现实需求描述 一般的,一个Android应用在开发到了一定阶段以后,功能模块将会越来越多,APK安装包也越来越大,用户在使用过程中也没有办法选择性的加载自己需要的功能模块.此时可能就需要考虑如何分拆整个应用了. 二.解决方案提出 一般有两种方式,一种是将应用按照功能分拆成多个应用,用户需要哪个就下载哪个,都需要就都下载.应用之间,可以在代码层面做一定的关联,以共享部分信息.另一种方式,类似于其他平台插件的方式,用户可以在主应用中可以选择性的下载需要的插件,不需要该功能,则不需要下载. 第一种

android sdk manager 无法更新解决方法

因为在开始->运行->cmd 中敲入 ping dl-ssl.google.com -t 始终ping不通 ,关闭cmd后 首先需要下载一个代理服务器下载地址 http://pan.baidu.com/share/link?shareid=341717&uk=2601338879 打开此软件,在内容选项中 看到生成的代理地址,记住ip地址127.0.0.1 和端口号8580 之后打开android sdk manager.exe  打开tools里的options 在弹出的对话框中,把