QCon全球软件开发大会9折优惠倒计时,了解详情 了解详情
写点什么

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

2021 年 6 月 28 日

揭晓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 年 6 月 28 日 16:079391
用户头像
罗燕珊 InfoQ中文站记者

发布了 138 篇内容, 共 50.3 次阅读, 收获喜欢 230 次。

关注

评论

发布
暂无评论
发现更多内容

音视频开发视频和视频帧:ffmpeg的RTMP推流

赖猫

音视频 ffmpeg 推流 RTMP RTSP

百亿级图数据在快手安全情报的应用与挑战

Nebula Graph

图数据库 大厂实践

iOS 面试策略之系统框架-网络、推送与数据处理

iOSer

ios

模块四作业

Chris Cheng

架构实战营

Springboot结合Netty实战聊天系统

Damon

音视频

你是否想要自由地构筑世界?51WORLD助力数字孪生开发者快速成长

51 WORLD

开发者工具 开发者关系 数字孪生 全要素场景

如何自学 Java ?不报班只白嫖行不行?

Java架构师迁哥

话题讨论|程序员在520最想收到什么礼物?

饭饭

程序员 恋爱 520 单身

手撕友商7nm FPGA?英特尔“亲儿子”上阵

新闻科技资讯

英特尔Agilex FPGA大规模量产出货,正面硬杠赛灵思

新闻科技资讯

消费者剩余:你愿意花多少钱买一件东西?

石云升

创业 产品 职场经验 5月日更

Redis后端之Redis持久化

赖猫

redis 后端 LinuxC/C++

牛!马士兵亲自教授坦克大战+精通23种设计模式,视频+笔记+源码

Java架构追梦

Java 架构 面试 23种设计模式 坦克大战

限量!Alibaba首发“SpringBoot实战笔记”,差距不是一点点

互联网架构师小马

Java spring 微服务 Spring Boot

现在后端都在用什么数据库存储数据?

读字节

MySQL 数据库 postgresql hadoop HBase

数字化转型助推,200亿元数据治理市场空间充满想象

DT极客

详解支撑7亿用户搜索的百度图片处理收录中台

百度Geek说

中台 搜索 图片处理

前端领域的数据状态统一管理机制

鲸品堂

前端 数据 流程图 state

面试官:啥是请求重放呀?

why技术

Java

话题讨论|做程序员五年后是什么样子?

饭饭

程序员 职业规划 发展现状 内卷 IT行业

全网首发20+互联网公司“Java面试考点大全”,应有尽有

Crud的程序员

Java spring 程序员 架构

云时代的数据之约

CloudQuery社区

数据库 云计算 运维 云服务 dba

英特尔PK赛灵思,完美胜出!Agilex™ FPGA迎来大规模量产

新闻科技资讯

如何模拟弱网环境?

运维研习社

Linux 运维 网络 5月日更

领域驱动设计(DDD)

信码由缰

DDD

Sentinel在docker中获取CPU利用率的一个BUG

捉虫大师

Java Docker sentinel

五一去见了一些身价数千万的成功人士,学到的认知和启示

陆陆通通

程序员 赚钱 认知

Rust从0到1-集合-Hash Map

rust hashmap 集合 Collections hash map

快时代的知识形态

Ryan Zheng

🕋【Redis干货领域】从底层彻底吃透AOF重写(原理篇)

李浩宇/Alex

redis持久化 aof Redis 核心技术与实战 5月日更

Nextcloud一站式体验

白粥

NAS Nextcloud

数据库运维技术发展与展望

数据库运维技术发展与展望

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