WSA 折腾日志

记录WSA的安装、联网、设置代理以及安装应用的折腾过程

准备工作

记得去BIOS开启CPU虚拟化

Windows设置调整

打开设置-应用-可选功能-更多Windows功能,勾选虚拟机平台,等待安装并重启
wsa2.png

然后在设置-隐私和安全性-开发者选项-开发人员模式中打开开关
wsa3.png

安装adb

  1. 下载完成后把安装包扔到固定的位置再解压,因为下面需要设置环境变量
  2. Win + S搜索并打开编辑系统环境变量
  3. 在系统变量中新建变量adb,变量值为刚才解压的文件夹路径,如D:\Program Files\platform-tools
  4. 双击打开系统变量中名为Path的变量,然后新建变量%adb%
  5. 确定三连
  6. 在终端中输入adb version查看是否设置成功

wsa4.png

安装WSA Toolbox

这个工具在国区微软应用商店被下架了,只能通过上面链接安装了。后续会需要它来打开WSA的Android系统设置。


安装WSA

这里我使用的是集成了root、Magisk与Google Play的整合包,省下一些麻烦。

  1. 首先fork一份代码到自己的仓库,然后在fork后的仓库中点击左上角的Actions
  2. Workflow中点击Build WSA
  3. 点击右侧的Run workflow,在下拉菜单中选择Build archx64,选择Variants of gappspico
  4. 最后点击绿色的Run workflow,等待build操作完成,一般需要等待五六分钟。
    wsa1.png
  5. 下载build完成的包,注意不要使用多线程下载器
  6. 解压
  7. 右键单击Install.ps1,选择Run with PowerShell,等待安装完成,安装完成后会打开Play商店
  8. 打开基于Android的Windows子系统设置,打开开发人员模式,记录下出现的ip,一般都是127.0.0.1:58526
    wsa9.png

联网的坑

在没有设置代理的情况下Play商店是连不上的,但是可以通过亚马逊应用商店来判断是否有网络连接,正常的话请跳过本章,本章专为像我一样的大冤种准备。
我在安装完WSA后怎么也连不上网,一直提示VritWifi连接受限。试了很多种方法,下面是Google大总结,不妨挨个尝试一下。

更改防火墙规则

以管理员身份运行终端,执行命令添加防火墙规则

1
New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow

然而这个对我无效。。。

更换DNS

更改WSA默认的DNS设置,然而对我依然无效

  1. 打开前面安装的WSA Toolbox,点击中间的Android设置
  2. 打开网络和互联网-互联网-WLAN-VritWifi
  3. 点击右上角的设置
  4. DNS 1更换为8.8.4.4或者114.114.115.115等常用DNS

wsa5.png

adb修改captive_portal

事实证明这个玩意儿纯属掩耳盗铃,打开终端,执行

1
2
3
adb connect 127.0.0.1:58526
adb shell settings put global captive_portal_https_url https://connect.rom.miui.com/generate_204
adb shell settings put global captive_portal_http_url http://connect.rom.miui.com/generate_204

这个操作的唯一作用是在能联网但是仍然提示网络连接受限的情况下去掉烦人的提示。。。

Captive portal(强制门户)是在授予新连接至Wi-Fi的用户更广的网络(互联网)访问权限之前在其网页浏览器呈现中的网页,其常用于呈现可能需要认证或接受最终用户许可协议/可接受使用策略的着陆页或登录页。强制门户应用于方方面面的移动宽带服务中(如有线连接、计费Wi-Fi及家庭热点),同时也可提供对企业或家庭有线网络(公寓、酒店和商业中心的网络)的访问权限。

因为WSA默认用谷歌的Captive Portal来检测是否联网,但是国内肯定连不上,所以就会提示网络受限,只要把检测服务器换成国内的就行了,这里白嫖小米的嘿嘿,还可以嫖苹果、华为和vivo的,把链接换了就行

USB网络共享

这个方法算是曲线救国,实在没办法的话可以用,但是重启之后可能需要重新设置

  1. 打开前面安装的WSA Toolbox,点击中间的Android设置
  2. 打开系统-开发者选型
  3. 打开使用开发者选型开关
  4. 下滑,找到网络-默认USB设置
  5. 设置为USB网络共享

开启Hyper-V功能

搜到了知乎希尔顿的文章,发现他额外开启了Hyper-V功能,试了一下,没想到真能行了🤣。毕竟按照官方文档的说法是不需要开启Hyper-V的

  1. 打开设置-应用-可选功能-更多Windows功能
  2. 展开Hyper-V
  3. 勾选Hyper-V平台
  4. 等待安装完成

wsa6.png

然后就神奇的连上网了,原理我到现在也没搞懂🤯


设置代理

正常操作

我用的客户端是V2rayN。如果用Clash的话直接谷歌就成,教程很多。

  1. 打开V2rayN,在设置-参数设置-基础设置中勾选允许来自局域网的连接
  2. 记下最下面显示的局域网http端口号,默认是10811
    wsa7.png
  3. 在终端中运行下面的命令,注意把127.0.0.1:58526替换成在基于Android的Windows子系统设置记下的ip,一般都是这个
    1
    adb connect 127.0.0.1:58526
  4. 在终端输入
    1
    ipconfig
  5. 找到目前使用的网卡的ip地址,例如我的就是192.168.50.70
    wsa8.png
  6. 在终端运行下面的命令,注意把ip换成自己的网卡的
    1
    adb shell settings put global http_proxy 192.168.50.70:10811

如果想要取消代理的话用下面的命令

1
2
adb shell settings put global http_proxy :0
adb shell settings delete global http_proxy

曲线救国

如果上面的方法不行的话,可以在WSA中单独安装设置代理软件,如V2rayNG


旁加载安装apk

如果没有代理可用的话,自然也就不能通过Play商店安装应用了,不过好在可以用旁加载的方式安装应用。

  1. 在终端中运行下面的命令,注意把127.0.0.1:58526替换成在基于Android的Windows子系统设置记下的ip,一般都是这个
    1
    adb connect 127.0.0.1:58526
  2. cd到apk所在的文件夹
  3. 执行
    1
    adb install apk名

国内的应用商店我用的是酷安