这个问题困扰了我两天,到现在才解决,这个方法全网,全百度,就只有一篇!
地址:https://blog.csdn.net/qq_14902731/article/details/124891739
全网仅此一篇!
另教程参考:https://www.zhihu.com/question/495358060
补充(2022.9.30)
经过一段时间的研究,我发现引起这个问题的根源不是因为was,而是因为我的网络开机了禁止二级路由,wsa的网络默认用nat到了一个172开头的ip。其实之前也有注意到这个问题,但是不知道为什么之前关闭禁止二级路由这个功能的时候还是不行,今天心血来潮测试了一下发现可以了。下面的教程有加上。
解决思路
一开始使用WSA时,wifi界面提示不可上网,然后我查看发现ip地址经过了nat,是172开头的,我尝试改为dhcp结果无效
后来我尝试将路由器的阻止二级路由关闭,但是没有用
百度各种教程,全部都是解决不可上网这个提示的,他们给出的教程是
adb shell settings put global captive_portal_https_url https://www.google.cn/generate_204
adb shell settings put global captive_portal_http_url http://www.google.cn/generate_204
这个方法并不能解决我不可上网的问题
我将他默认的固定ip改为dhcp(吐槽一句 这地方鼠标有问题得键盘操作)
结果改了之后死活无法接入,此时我怀疑是nat没有dhcp
后来我在这篇文章找到了更换hyper-v虚拟机网卡的方法(咱是vmware用户,除了沙盒从来没用过hyper-v)
通过这个我成功解决了我的问题
解决方法
若您使用代理,该教程不使用于你
其他请另行百度
从最开始的地方开始说,在操作任何安卓系统之前请确保您已有adb
安装ADB
ADB工具官网:https://developer.android.google.cn/studio/releases/platform-tools?hl=zh-cn
[镜像]适用于Windows的文件直接:https://cloud.alongw.cn/api/v3/file/source/605/ADB.zip?sign=fW0IVqXmtcZv7ssaqpj_r7oCYUNQ6YdNVMplKP4NQR8%3D%3A0
程序员这里做的有问题,点名批评
配置ADB环境变量(其实也可以不配置但是麻烦点所以推荐配置)
将ADB解压到一个文件夹,然后配置环境变量(其实你也可以把他解压到System32
,但是我不推荐)
新版本设置
预览后选择ADB工具包的根目录,如果你听不懂这句话,请查看这篇文章:https://www.alongw.cn/archives/263
然后确定确定确定即可
旧版本设置界面…(不对啊旧版哪来的WSA,算了当环境变量添加教程了)
预览后选择ADB工具包的根目录,如果你听不懂这句话,请查看这篇文章:https://www.alongw.cn/archives/263
然后确定确定确定即可
装完在命令行中输入adb,将会显示提示(若未显示请重启终端,否则就是环境变量配置有问题)
顺带一提,若虚拟机ADB一直连不上,请检查一下任务栏的图标,有没有是否允许连接的对话框
因为谷歌验证的问题
管理员运行powershell
然后运行
adb connect 127.0.0.1:58526
成功后运行
adb shell settings put global captive_portal_mode 0
DNS的问题
修改DNS为114.114.114.114
系统防火墙的问题(若未开启防火墙请忽略)
管理员运行powershell,输入命令(也可尝试关闭防火墙)
New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow
子系统的问题
进入设置-应用-应用和功能,找到windows subsystem for Android ,点三个点,高级选项,选择修复。
还是谷歌的原因
管理员运行powershell
然后运行
adb connect 127.0.0.1:58526
成功后运行
adb shell settings put global captive_portal_https_url https://www.google.cn/generate_204
adb shell settings put global captive_portal_http_url http://www.google.cn/generate_204
虚拟机中设置DNS
管理员运行powershell
然后运行
adb connect 127.0.0.1:58526
成功后运行
adb shell am start -n com.android.settings/.Settings\$WifiSettingsActivity
这时会进入安卓的设置界面,打开网络和互联网,进入WLAN,选择已经连接的VirtWifi,进入设置,右上角铅笔编辑,修改dns为114.114.114.114,备用8.8.8.8
路由器禁止二级路由(2022.9.30补充)
有一些路由器有禁止路由器的功能,我研究了一段时间,之前有排查过这个不行,但是仔细想想我was中默认给的ip是172.21.104.224,给的网关是172.21.96.1。然后查看物理机的网卡信息(如图)
这怎么看都是一层nat啊!!不甘心的我又再次尝试关闭这个功能,重启WSA,然后发现问题成功解决!
修改Hyper-v网络配置让其使用物理网卡物理连接网络(我是通过该方法解决的问题)
该方法会修改网卡的配置,强迫症者切勿轻易尝试
这种方法是修改hyper-v的网卡设置,将他设置成使用物理网卡连接网络,用于禁止二级路由的情况
如果你用这个方法能解决,那多半就是禁止二级路由惹得锅
将连接类型改为外部网络
,然后选择电脑上网使用的网卡
若确认时出错,请执行下面的操作
选择正在使用的网卡,然后点击属性
确定确定确定
重启电脑
重新设置即可
接下来修改WSA网络设置
若操作出现问题,请使用键盘
雖然文章無法解決問題,但網頁做得不錯
我去!這個定位怎麼這麼離譜(驚
發生腎麼事了,,,
阿?
就是沒辦法啊,你說的我都試過了,每一個環節都正常,但最後就是沒辦法連線(悲
如果博主的文章不work,附上一个可能的思路:尝试通过ADB移除代理
Hyper-V 管理器中WSL连接类型选择外部网络后,子系统中编辑dhcp连接wifi直接崩溃闪退,无任何错误弹窗,打不开任何安卓软件,重启后连接类型自动变为内部网络,安卓子系统正常启动,但是网络就是不正常(每步都按你这样操作了)
子系统里面wifi设置操作很迷,经常点了没反应之类的,我当时也这样,用键盘在不同的入口上试试