AndroidStudio自带的模拟器不能上网

AndroidStudio自带的模拟器不能上网

通过百度/谷歌,最后发现确实是最经常出现的问题:电脑的DNS和模拟器的DNS不同

查看电脑DNS

cmd命令行输入 ipconfig /all
AndroidStudio自带的模拟器不能上网

查看模拟器DNS

cmd命令行输入 adb root -> adb shell -> getprop
然后会出来一个列表,,找到n开头的 [net.dns1]
AndroidStudio自带的模拟器不能上网
两个地方确实不一样,另外查看模拟器DNS的时候,网上还有另外一种方法,也是出来一个列表很多条目,但是其中没有[net.dns1]这一条

设置模拟器DNS,将模拟器DNS和电脑的DNS设置成一样的

.\emulator -avd 模拟器名 -dns-server 你自己的DNS地址
首先进入到Android的sdk下的emulator目录,在这里打开cmd命令行
输入以下命令:.\emulator -avd 模拟器名 -dns-server 你自己的DNS地址
模拟器名称不要有空格,输入完以后正常情况下,模拟器浏览器就可以打开百度了,如果不行继续往下看

emulator: ERROR: Unknown AVD name [模拟器名], use -list-avds to see valid list.ANDROID_SDK_HOME is defined but there is no file 模拟器名.ini in $ANDROID_SDK_HOME\avd(Note: Directories are searched in the order $ANDROID_AVD_HOME, $ANDROID_SDK_HOME\avd and $HOME.android\avd)

意思就是说找不到这个模拟器名字,而且虽然ANDROID_SDK_HOME已经被定义了,但是ANDROID_SDK_HOME/avd目录下并没有模拟器名字.ini文件
ANDROID_SDK_HOME是需要在环境变量中配置的,avd目录就是as下载模拟器存放的目录,正常在.android文件夹下,然后我把avd目录手动复制到ANDROID_SDK_HOME目录下,再运行设置模拟器的DSN命令行就可以了

需要注意的是

1.使用这种方法的时候,不能事先开启模拟器,因为会通过命令开启,不能同时有两个一样模拟器被开启
2.命令行被关闭的时候,模拟器也会被关闭

参考链接
https://www.jianshu.com/p/cb738ad177ac.

https://blog.****.net/huweiliyi/article/details/105343767?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.edu_weight&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.edu_weight.