报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

揭晓 Windows 11 如何做到原生支持安卓应用

  • 2021-06-28
  • 本文字数:2520 字

    阅读完需:约 8 分钟

揭晓Windows 11如何做到原生支持安卓应用

编译|核子可乐、燕珊


虽然微软某高管曾在 6 年前宣称“Windows 10 之后不再有下一代 Windows 操作系统”,但事实显然并非如此。当地时间 6 月 24 日,微软举办Window 11发布会,这是微软继 2015 年推出 Windows 10 操作系统以来,发布的第一个新的 Windows 系统大版本,并且 Windows 11 可谓是赚足热度,其中最重要的更新之一便是“支持 Android 应用的运行”。


与此同时,引起热议的是,Android 应用的支持究竟是如何实现的呢?是靠模拟实现还是说用到了 Windows 现有的 Linux 支持机制?关于这点,微软在当时的主题演讲中并没有透露公布太多细节,不过,在后来发布的开发者访谈视频中,答案开始浮现。


支持安卓应用的实现原理


事实上,新功能的官方名称为“Windows Subsystem for Android”,跟 Windows Subsystem for Linux(WSL)有异曲同工之妙,也基本上揭示了背后的实现原理。Windows 目前的 Windows Subsystem for Linux,可以说是基于 Hyper-V 功能的子集提供了“真正的 Linux 内核”。(Hyper-V 允许由第二客户操作系统绕过主机操作系统直接访问裸机硬件,因此资源消耗更低。)


而手机 Android 使用的正是 Linux 内核,于是微软着手在 WSL 之上构建起一套 Android 框架,用于适配 Windows Subsystem for Android。简单来讲,就相当于是在 Hyper-V 上运行 x86 Android。


微软 WSL 项目负责人 Miguel Ramos 在推特上称新功能“和 WSL 一样酷”。


Windows 下的 Android 应用在使用体验上与原生 Windows 应用程序一致,同样具有前置窗口、任务栏条目以及添加到开始菜单等功能。微软在其演示中表示,“在底层,我们实际创建了一款代理原生应用,作为 Android App 模型与 Windows 应用程序模型之间的桥梁。”据推测,这意味着新系统也能够为 Android 应用提供诸如开始菜单快捷方式、图标、应用卸载列表条目,以及其他与原生 Windows 应用程序高度统一的体验元素。



微软希望尽可能降低、甚至彻底消除“模拟”,但具体取决于设备型号与 Android 应用本身。Windows 与 Android 分别运行在 x86 与 Arm 架构之上,Windows 支持 x86、而 Android 支持 Arm。所以,如果是在 Arm 上运行 Windows,那 Android 应用的支持根本不是问题;而如果使用的是 x86 Windows,微软则提供 Android 应用的对应 x86 版本。


但如果某款 Android 应用只有 Arm 版本,那么英特尔Bridge技术就能把 Arm 代码转换为 x86 CPU 所支持的形式。微软方面还特别强调,这项功能也适用于 AMD CPU。


TikTok 在 Windows 11 上运行。


微软采取的方法其实也类似于其他一些操作系统的 Android 应用支持模式。


其中,Chrome OS 的 Android 应用支持功能可以算是典型案例了,毕竟 Chrome OS 本身运行的就是 Linux 内核,所以可以直接通过一套容器化 Android 框架实现 App 运行。但如果选择的是 x86 Chromebook,Chrome OS 会使用 Android 内置的 Arm-to-x86 进行二进制转换。而如果使用的是 Linux 桌面操作系统,则通过 Anbox 工具在 Linux 上加载 Android 框架,最终实现同样的支持效果。如今,大家甚至可以在 WSL 上运行 Anbox。


很多人对 x86 Android 的最后一次体验,可能来自 2012 年由英特尔发布的 Atom 版 x86 手机,包括华硕 Zenfone 系列在内的相关产品都不怎么样。


后来经过不断的发展,x86 Android 已经取得了很大的进步;2016 年推出的 Android Chrome 也在操作系统层面解决了不少问题。而且在 2016 年之前,谷歌就一直在推动 Arm 架构对于 x86 应用程序的支持能力,其内部开发工具也早已默认支持 Arm 与 x86 二进制文件转换。


同样是在 2016 年,谷歌做出了一项重要判断:未来预计 25%的 Google Play 里的应用将完全无法支持 x86,必须配合 Arm 转译工具才能实现适配。但随着更多 x86 客户开始选择 Chrome OS,这个比例可能要比预期更低一些。


从哪里下载安卓应用?


那么,用户要如何给 Windows 11 下载安卓应用?微软并不打算在 Windows 上使用 Google Play 生态,也无意构建自己的生态。这一次,他选择了与亚马逊合作,使用与 Fire OS 设备同平台的 Amazon Appstore。亚马逊还就此事发布了专门的新闻稿,表示随后将逐步放出更多具体细节。


我们还没在 Windows 11 上看到过完整的 Android App 安装流程,所以不敢断言具体是怎么实现的。微软目前也只发布了几张截图,展示了微软 Store 上列出的 Amazon Appstore 应用页面。看起来,微软应用商店是直接转载了亚马逊的 App 目录,包括其中的评论、截图与说明内容。


但微软自家的应用商店似乎没法直接安装 Android 应用,必须点击安装并跳转至 Amazon Appstore。对于 Windows 应用,这个位置的按钮为“获取”,代表要安装相应的应用程序;但对 Android 应用,按钮内容不同,显示为“从 Amazon Appstore 获取”,并带有一个小框加箭头图标,提示点击后将进行跳转。



不过据《华尔街日报》报道,亚马逊会为 Windows 构建一款专门的 Amazon Appstore 客户端,用户需要使用相应的亚马逊账户才能登录并下载应用。微软应用商店则只是一套统一的应用搜索界面,再无其他用处。根据推测,这意味着两套 AppStore 将同时在 Windows 上保持运行且分别检查更新——听起来好像很麻烦。


微软工程师 Miguel de Icaza 则证实,Windows 11 还为不想安装 Amazon Appstore 的朋友提供旁加载支持,供大家直接从 F-Droid 等开源商店或 APKMirror 等其他应用获取渠道。这样看起来,最后连 Google Play 也会挤进战团。


凭借多年的默认推动与对额外架构的良好支持,x86 应用程序在 Google Play 上已经颇具人气。但 x86 在 Amazon Appstore 上的普及度如何?由于我们已经可以在任何 Android 设备上旁加载 Amazon Appstore,而亚马逊自家的 Echo Fire 设备则全部采用 Arm 架构。再考虑到大部分应用已经可以在一切架构上顺畅运行,所以应该没什么问题。



如果微软推出 Surface Duo 并与谷歌合作在 Windows 11 中推出 Play 商店,那就万事大吉了。因为一切脱离 Play 商店安装的 Android 应用都无法访问推送通知等 Play Services API。但多年以来,亚马逊一直在为 Fire OS 构建自己的替代 API 及云服务,所以如果真的没有谷歌 Play,Amazon Appstore 也确实是个不错的选择。


本周,微软将通过 Windows Insider 渠道提供 Windows 11 的早期预览版本。正式版本的推送日期暂未确定,微软官方说的是“今年晚些时候”,并且只有 64 位的设备才能安装。


附上 Windows 11 对设备的硬件要求/最低配置:


延展阅读:

https://arstechnica.com/gadgets/2021/06/microsofts-windows-subsystem-for-android-sounds-a-lot-like-chrome-os/

2021-06-28 16:0716393
用户头像
罗燕珊 AI practitioner | Tech media

发布了 520 篇内容, 共 375.1 次阅读, 收获喜欢 839 次。

关注

评论 2 条评论

发布
用户头像
这有啥用, 有几个应用是x86的?

微软希望尽可能降低、甚至彻底消除“模拟”,但具体取决于设备型号与 Android 应用本身。Windows 与 Android 分别运行在 x86 与 Arm 架构之上,Windows 支持 x86、而 Android 支持 Arm。所以

...

indows 支持 x86、而 Android 支持 Arm。所以,如果是在 Arm 上运行 Windows,那 Android 应用的支持根本不是问题;而如果使用的是 x86 Windows,微软则提供 Android 应用的对应 x86 版本。

2022-01-06 11:34
回复
用户头像
你这不是在搞笑?

微软希望尽可能降低、甚至彻底消除“模拟”,但具体取决于设备型号与 Android 应用本身。Windows 与 Android 分别运行在 x86 与 Arm 架构之上,Windows 支持 x86、而 Android 支持 Arm。所以

...

indows 支持 x86、而 Android 支持 Arm。所以,如果是在 Arm 上运行 Windows,那 Android 应用的支持根本不是问题;而如果使用的是 x86 Windows,微软则提供 Android 应用的对应 x86 版本。

2022-01-06 11:33
回复
没有更多了
发现更多内容

架构师训练营 1 期第 11 周:安全稳定 - 作业

piercebn

极客大学架构师训练营

Spring 源码学习 07:ClassPathBeanDefinitionScanner

程序员小航

Java spring 源码 源码阅读

性能压测练习

Mars

面试官:说说你对【注解】的理解

田维常

11.7高可用故障案例分析

张荣召

学习总结--week11

张荣召

沉默的性能杀手 - false sharing

helbing

Go 语言

ShardingSphere RAW JDBC 分布式事务 Atomikos XA 代码示例

Java MySQL 数据库 分布式事务 ShardingSphere

安全稳定第十一周作业「架构师训练营第 1 期」

天天向善

作业-第7周 性能优化一

arcyao

架构师 3 期 3 班 -week3- 作业

zbest

作业 week3

第十一周作业

极客大学架构师训练营

七、性能

Geek_28b526

架构师训练营第二周”框架设计“学习笔记

随秋

极客大学架构师训练营

第十一周 安全稳定 总结

三板斧

极客大学架构师训练营

架构师训练营第 1 期 - 第 11 周课后练习

Anyou Liu

极客大学架构师训练营

架构师第十一周总结

_

极客大学架构师训练营 第十一周总结

架构师训练营第二周总结

J

极客大学架构师训练营

架构师训练营第 11 周作业

netspecial

极客大学架构师训练营

架构师训练营 1 期 - 第十一周 - 安全稳定

三板斧

极客大学架构师训练营

架构师训练营 week7 学习总结

花果山

极客大学架构师训练营

架构师训练营 week7 课后作业

花果山

极客大学架构师训练营

第七周课后练习

lithium

架构师 3 期 3 班 -week3- 总结

zbest

总结 week3

架构入门学习感悟之七

笑春风

架构师训练营第二周”框架设计“作业

随秋

极客大学架构师训练营

基于 localStorage 实现一个具有过期时间的 DAO 库

徐小夕

Java 算法 大前端

11.6高可用:架构运维方案

张荣召

安全稳定-安全架构高可用

garlic

极客大学架构师训练营

性能优化总结(一)

Mars

性能优化

架构师训练营第十一周课后作业

Gosling

极客大学架构师训练营

揭晓Windows 11如何做到原生支持安卓应用_大前端_Ron Amadeo_InfoQ精选文章