2021年6月25日,微软召开线上发布会,对外宣告下一代Windows操作系统Windows11,Windows11为用户重新打造的MicrosoftStore,速度更快,采用了美观易用的全新设计,并承诺首次将Android应用程序引入Windows。
2021年10月5日,微软宣布将于2021年10月5日正式开始推送Windows11,10月5日起,符合条件的Windows10PC将可免费升级到Windows11,预装Windows11的各种全新PC设备也将开始上市发售,并宣称期待通过与亚马逊和英特尔的合作,继续将Android应用程序带到Windows11和MicrosoftStore,在随后的几个月中,该功能将首先面向Windows预览体验成员推出预览版本。
2021年10月20日,微软表示,Win11安卓子系统(WindowsSubsystemforAndroid)能够使Win11设备运行Amazon应用商店中的Android应用程序,已为开发者准备好了指南文档。
2021年10月20日,微软宣称,Windows11上Android应用程序的第一个预览版现已提供给美国Beta频道的Windows内部人员。
微软与亚马逊合作,为Windows内部人员首先推出了50款安卓App,以便在一系列硬件上进行测试和验证。微软将在未来几个月通过WindowsInsider程序发布更多的安卓App。
这50款App中包含:
如果你用手工安装,可绕过微软的灰度方案,在Windows11的正式版、Beta通道、Dev通道都可以顺利安装和体验。
Win11安卓子系统(WindowsSubsystemforAndroid)包括Linux内核和基于Android开源项目(AOSP)版本11的Android操作系统。它作为AmazonAppStore安装的一部分通过MicrosoftStore分发。该子系统在Hyper-V虚拟机中运行,就像Linux子系统一样,可以将AOSP环境中App的运行时和API映射到Windows图形层、内存缓冲区、输入模式、物理和虚拟设备以及传感器,可以在英特尔、AMD、高通的CPU上运行。
安装包体积有1.2G,需要耐心等待哈。
可能会提示无法安装。
不要紧,我们在开始菜单右键,使用Windows终端(管理员)命令进入,切换到安装包所在目录,执行如下安装命令:
安装成功之后,你就可以在开始菜单看到绿色图标的应用了
打开它,可以进入设置页面。
点击文件的右侧箭头,触发一次启动
如果提示无法启动安卓子系统
那么前往系统设置界面,"应用"->"可选功能"->"更多Windows功能"=>勾选"Hyper-V"和"虚拟机平台",确定重启系统即可
8G7XN-V7YWC-W8RPC-V73KB-YWRDBC38W9-KWNBH-M4HWH-746BK-H6DGY这下真的可以看到安卓子系统的文件了。
内存占用感觉还好
为了方便本地调试,我们打开下开发者模式,方便我们通过adb本地调试。
安装方式:
由于考虑到WSA和WSL同根同源,之前微软已经为WSL联合各个显卡厂商推出了能调用GPU加速的WSL专用显卡驱动,那么如果想在安卓子系统中让应用充分调用,那么我们可以尝试安装这些驱动。
你应该首先安装与你的系统匹配的预览驱动程序。这使你能够使用虚拟GPU(vGPU)以便你可以从硬件加速OpenGL呈现中获益。
a.NVIDIA
b.AMD
亚马逊应用商店(AmazonAppStore)将出现在Windows11的开始菜单中,并在搜索时可用,提供一个精心策划的安卓应用目录。
选择“获取”将开始安装该应用程序,一旦成功完成安装,将出现一个Windows通知。该应用程序也将出现在Windows开始、搜索和Windows程序列表中。
如果你的亚马逊应用商店(AmazonAppStore)尚未准备好,或者你从该商店找不到你所需要的安卓应用,那么通常来说,我们可以通过搜索引擎搜索该应用软件的官方网站来获取安装文件。
通常,安卓应用的安装文件后缀为.apk,那么我们也可以把它作为关键词来搜索。
以"支付宝"应用为例,搜索关键词支付宝apk即可快速找到官网。
进入后,找到对应的Android版本,点击即可启动APK文件的下载。
部分应用软件可能没有在官网提供有效的下载连接,那么也可以通过从一些下载站来获取,不过需要留意的是,尽量找到最新版本。
要访问WindowsSubsystemforAndroid设置应用程序,请转到:"开始菜单">"所有应用程序">WindowsSubsystemforAndroid。“设置”应用程序可以用来调整以下设置。
打开后,进入安卓(Android)子系统的设置界面
1.文件
点击"文件"右侧的小箭头图标,即可进入安卓子系统的文件资管管理器。
展开右侧的导航菜单,可以切换文件分类的位置。
2.子系统屏幕阅读器
3.子系统资源
持续:子系统总是准备好打开应用程序。由于它总是在后台打开,它将使用你的PC的更多内存和处理能力。
4.可选诊断数据
5.开发人员模式
如果你要在Windows11设备上本地调试你的安卓应用,那么需要将开发人员模式设置为"开启"状态,比如通过Adb侧加载应用和联调。
当开发人员模式被成功开启,它将展示更多的连接信息,包括连接的IP和端口,处于同一个局域网的开发机器或者本机多可以使用它来连接。
如果你对安卓原生的开发人员调试选项有更多的需求,也可以点击"管理开发人员设置",打开安卓子系统的开发设置窗口进行更多设置。
6.IP地址
如果你想要查看安卓子系统的IP地址,那么可以通过点击这里的"刷新"按钮来显示它,不过前提是,安卓子系统目前处于开启运行状态。
7.重置为默认值
如果你想一键还原你的安卓子系统的设置,可以点击这里的"重置"按钮。
8.关闭适用于Android的Windows子系统
安卓子系统也需要关机操作,如果你想主动关闭它,那么可以点击这里的"关闭"按钮。
如果你看不懂"安装安卓应用之旁加载(AdbSideLoad)"教程,那么目前已经有了一款工具箱应用,它可以可视化帮助你来完成应用的安装。
意大利开发人员SimoneFranco开发了一款MicrosoftStore应用程序WSATools,只需双击APK即可轻松完成。
这款应用的特点是:
但是从实际测试来看,并非所有应用都可以顺利加载,只有部分可以,还需要等待作者进一步更新了。
如果你的亚马逊商店还没准备好,那么我们也可以直接用APK在本地安装,这里可能要熟悉一些adb命令,但是确实很香。
正如前面安装环节介绍,要打开开发者模式,才可以实现本地安装
在Windows11开始菜单图标上右键,可以找到"Windows终端"菜单,点击进入。
adbconnect127.0.0.1:58526这里端口号可能每个人不一样,要以设置页面为准
这里的是adbconnect是连接指定安卓调式地址指令前缀,,后面空格再跟具体安卓系统的IP+端口,这个信息会显示在安卓子系统设置页开发者模式那栏,正常开启后会出现小字说明。
如果在这一步遇到拒绝连接,说明安卓子系统或许已经异常关闭了,我们可以点击设置应用中的"关闭适用于Android的Windows子系统"对应的关闭按钮,再点击"文件"右侧的箭头按钮,重新开启一次,必要的话,还可以先关闭开发者模式,再开启,确保它正常工作。
这里的是adbdevices是显示已连接的安卓设备,如果顺利连上会显示安卓子系统的,前提是要打开开发者模式哈。
这里的是adbinstall是安装指定应用文件的指令前缀,后面空格再跟具体安卓APK文件的路径,这里.\是代表当前目录的意思。
这个代表,你目前有多个设备连着,如果不指定的话,adb是不知道你这个动作要具体安装到哪个设备的。
为什么会遇到这个情况呢?也许是因为你在用一些工具导致的,比如WsaTools这个工具,它默认会走localhost:58526来连接,但是Wsa的设置界面会告诉你,应该走127.0.0.1:58526来连接,有开发背景的童鞋其实知道,实际上这本质是同一个位置,但是系统会认为这是两个连接位置。
通过adbdevices命令,我们就可以看到这个情况了:
要解决它,有两种办法。
a.彻底不用手工命令,纯用WsaTools这类工具
先通过上诉命令,关闭调已有的所有adb连接,然后完全通过使用WsaTools这类工具来安装应用即可,这时候只会出现localhost:58526这一个连接。
这时候,WsaTools这类工具也是可以正常使用的。
b.兼容手工命令,通过指定设备来执行安装
adbdevices先通过Devices这个命令查看下已连接的设备,前面的名称就是DeviceId。
对于框架无法预测的击键,应用程序需要自己处理行为。如果这已经在应用程序中实现,则不需要额外的工作。
例如,某些游戏可能已经支持通过键盘(wasd)、按键以及触摸输入方便移动。
开发人员在为Windows11设备构建时应考虑的代码更新的键盘输入:
开发人员在为Windows11设备构建时应考虑更新以下鼠标输入的代码:
与传统的移动设备外形不同,在Windows11上运行的Android应用程序可以自由调整大小,在调整大小时应该具有响应性,并且可以使用Windows操作/手势进行捕捉。
a.最低屏幕要求
Windows11强制要求最低屏幕要求为720p分辨率(1280x720),屏幕大于9英寸。
b.字符和间距
当窗口大小的纵横比在显示窗口的设备屏幕大小之间不对齐时,结果可能是Letterboxing(窗口比它高,或水平更长)或Pillarboxing(窗口更窄)比它宽,或垂直长)。结果是将条形放置在窗口的两侧以使其居中。这些条可能是浅色或深色主题,具体取决于所选的系统设置。这只会在Android应用程序被捕捉或最大化时发生,允许Android应用程序利用Windows中丰富的捕捉功能并集成到窗口模型中。
c.其他调整大小注意事项
在更新Android应用以在Windows11设备上运行时,还应考虑以下有关窗口管理和调整大小的问题:
适用于Android的Windows子系统利用虚拟机(VM),该虚拟机提供与AOSP框架和键盘、鼠标、触摸、笔等设备的兼容性。
使用适用于Android的Windows子系统运行应用程序的VM有三种可能的状态:
这些状态之间的转换由用户活动触发,例如启动或与Android应用程序或应用程序通知交互。Android应用程序会在窗口最小化时暂停然后停止。
为了在Windows11设备上提供,必须向亚马逊应用商店发布Android应用程序。目前,只有微软和亚马逊选择的一小套应用程序可用。
开发人员应参考亚马逊设备定位指南,了解有关将APK定位到特定设备的信息。
适用于安卓的Windows子系统内置了一个将ARM应用跑在X86架构的解决方案,但是这个仿真层将会带来额外的性能开销,为了获得最佳的性能,建议编译和发布时提交x86、X64架构的程序包。
您可以卸载适用Android的Windows子系统,但请注意,所有关联的应用程序也将被卸载。
前面,我们下载了最新版的Win11安卓子系统(WindowsSubsystemforAndroid)的安装包MicrosoftCorporationII.WindowsSubsystemForAndroid_1.7.32815.0_neutral_~_8wekyb3d8bbwe.msixbundle,我们不直接双击它,我们用压缩软件打开它。
我们发现,这里面不过也就打包了X64和ARM两个架构的子安装包。
我们把其中的WsaPackage_1.7.32815.0_x64_Release-Nightly.msix,单独解压出来。
然后我们再次通过压缩软件,把这个.msix全部解压处理。
进入解压后的文件夹,然后找到其中的AppxManifest.xml文件,找个编辑器打开它。
我们发现这里,从本质来说,其实就是靠Dependencies节点下的这个Windows.Desktop的这个最小版本10.0.22000.120来限制安装的,我们直接改成Win10的版本号即可。
这里,以Window10的最新长期支持版1809为例,所以它的最小版本号应该设置为10.0.17763.0,修改之后保存。
然后我们在Capabilities节点删除以下信息:
然后在Extensions节点删除以下信息:
接下来,我们用命令行的方式来安装它,这里需要指定这个AppxManifest.xml文件进行安装,在开始菜单右键,以管理员权限运行你的PowerShell之类的Windows终端。
add-appxpackage-register"D:\Wsa\WsaPackage_1.7.32815.0_x64_Release-Nightly\AppxManifest.xml"顺利的话,你就可以看到绿色图标的Win11安卓子系统(WindowsSubsystemforAndroid)了