之前不是在虚拟机的win11上搞过Android的子系统嘛…那时候就是为了尝尝鲜试了一试,但是现在Android子系统发展的也比较成熟了,打算开始正式体验一下这玩意。但我还是不想升级win11(凭什么删我win10的磁贴,铁咩!),而且我也不想用Amazon的应用商店。好巧不巧,在Win10下安装使用Google商店的Android子系统早已经被大神们折腾出来了,记录一下我的操作流程。我先将本blog中使用的2个GitHub开源项目链接放在这里。
MagiskOnWSALocal
WSAPatch

构建附带有Google商店的Android子系统安装包

创建一个Linux环境

首先我放一个官方推荐的方法,就是直接去Microsoft Store下载一个Linux子系统

Ubuntu WSL2
Debian WSL2
openSUSE Tumbleweed WSL2
当然,并没有这么简单,因为…咱是国内用户….之后是需要去GitHub上clone项目的….
此时你需要一个clash,并把Allow LAN(允许局域网连接)打开,端口保持默认的7890就可以,然后切换到WSL2终端,使用sudo apt-get install net-tools安装一个查看ip地址的网络工具,安装好后使用ifconfig查看WSL2的ip,当然用本地cmd的ipconfig命令查看也不是不彳亍。(此ip不固定,每次重启后都会改变)

记录好上面的ip地址,然后在WSL2终端中配置代理

1
2
export http_proxy=http://192.168.233.233:7890   #ip记得换成上面你查看到的ip地址
export https_proxy=http://192.168.233.233:7890 #ip记得换成上面你查看到的ip地址

配置好后使用curl www.google.com查看一下是否能正常联网,有返回数据即可。至此,本地的Linux环境便部署好了。

使用云服务器的Linux环境(我就这么干的)

直接找一家国外的vps商家开一台就好了,非常的省事,而且也不用操心网络问题。不过有一点需要注意的是,有些vps商家的ip质量较差,在后续运行脚本中进行文件下载的时候可能会报一个TLS握手失败的错,我在RackNerd开的一台12刀1年的小鸡就是这样,于是乎我就去CloudCone又临时开了一台小鸡,问题解决。这里作为一个踩坑提示给大家。在之后将安装包构建好之后,你只需要安装一个aapanel(宝塔)把文件直接下载回来就可以了。

开始构建

  1. 首先clone一下项目。git clone https://github.com/LSPosed/MagiskOnWSALocal.git --depth 1
  2. cdMagiskOnWSALocalscripts目录下,运行./run.sh
  3. 剩下的选项根据个人进行选择即可,就是选择软件的版本等,以及安装Google商店和删除Amazon商店的选择,基本可以全部默认。

这里不要跟我一样选第一个!!!选最后一个Insider Fast/Dev Channel!!!

选yes安装Google商店

这里这个我本人选的第一个

选no删除Amazon商店

这里一定要选yes,打包输出,方便下载,而且之后也会改文件,毕竟是在win10上安装

选择适合自己的打包格式,默认7z

之后就是漫长的等待,要有耐心,直到出现2个done就是完成了

完成之后你会得到一个名字类似于WSA_2301.40000.7.0_x64_Release-Nightly-with-magisk-25.2(25200)-stable-MindTheGapps-13.0-RemovedAmazon.7z这样的压缩包,建议找一个地方新建一个WSA的文件夹保存好,这个文件是咱们的主角。

安装Win10运行补丁并进行子系统部署,安装Apk安装器

安装补丁

  1. 先把你在上面得到的压缩包解压,然后直接去WSAPatch的GitHub上下载Releases里的patch压缩包,把包里的文件扔到WsaClient文件夹里就好了。

  2. 然后按以下要求修改一下AppxManifest.xml文件

    1. AppxManifest.xml 找到 TargetDeviceFamily 节点

      1
      <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.22000.120" MaxVersionTested="10.0.22000.120"/>

      MinVersion10.0.22000.120 改成 10.0.19045.2311

    2. AppxManifest.xml 删除 “customInstall” 相关节点,一共有两个.
      找到以下内容,然后删掉.

      1
      <rescap:Capability Name="customInstallActions"/>
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      <desktop6:Extension Category="windows.customInstall">
      <desktop6:CustomInstall Folder="CustomInstall" desktop8:RunAsUser="true">
      <desktop6:RepairActions>
      <desktop6:RepairAction File="WsaSetup.exe" Name="Repair" Arguments="repair"/>
      </desktop6:RepairActions>
      <desktop6:UninstallActions>
      <desktop6:UninstallAction File="WsaSetup.exe" Name="Uninstall" Arguments="uninstall"/>
      </desktop6:UninstallActions>
      </desktop6:CustomInstall>
      </desktop6:Extension>

子系统部署

双击运行 Run.bat (可能需要管理员权限,一般直接双击就好)。如果这个方法不生效,就以管理员模式打开Windows Terminal,cd到你wsa的目录下,执行PowerShell.exe -ExecutionPolicy Bypass -File .\Install.ps1,基本就可以了。如果有报错,可使用Add-AppxPackage -ForceApplicationShutdown -ForceUpdateFromAnyVersion -Register .\AppxManifest.xml进一步排查,并运行Get-AppPackageLog -ActivityID <UUID>获取错误日志以供排错参考。

Apk安装器

直接去微软商店搜索,我本人推荐使用这个,设置界面比较清楚,而且GitHub上有开源。

然后我推荐自己去下载一个ADB,放在wsa的同一目录里,方便管理,然后在Apk安装程序里设置一下自己的ADB的路径。

哦对了,这玩意也建议勾上。

结束语

到这里Android子系统就可以正常跑起来并实现直接双击安装apk了。搞这东西,我踩了2个比较大的坑,一个就是Linux环境的问题,本来想使用本地环境弄个代理就好了,但是在执行run.sh脚本的时候,下载一个某apk文件一直在Redirecting,我估计是代理出了问题,但搞了半天解决不了,反复更换节点也没啥用,于是乎我就去开了一台国外的小鸡,顺利构建好了包;二就是选择wsa版本那里,一开始我一直傻了吧唧的选的stable版本(就像截图里一样),然后在部署的时候老是失败,根本没法注册应用,然后我回WSAPatch的GitHub上看了一眼,人家推荐选Insider Fast/Dev Channel版本的,果不其然,选这个部署就成功了。GApps那里之后我也改为了使用OpenGApps,不是踩坑了,单纯是因为看别人视频大多都选的这个。嘛,这次就这么多吧,Android子系统在Win10上弄好了,可以说是彻底让我摆脱了对是否要升级Win11的犹豫,这下可以继续安安心心的用我的Win10喽~