红帽白皮书新鲜出炉!点击获取,让你的云战略更胜一筹! 了解详情
写点什么

揭晓 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:0714987
用户头像
罗燕珊 InfoQ中文站编辑

发布了 413 篇内容, 共 237.9 次阅读, 收获喜欢 756 次。

关注

评论 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
回复
没有更多了
发现更多内容

微信朋友圈高性能架构

Geek_db27b5

Prometheus relabel 透析与实战

卓丁

Prometheus relabel_config

字节面试官狂问我:如何设计一个高并发系统?

Java架构师迁哥

0基础架构入门 - 2(架构设计复杂度模型和应对之道)

felix

架构实战营 0基础架构入门

k8s garbage collector源码分析(2)-处理逻辑分析

良凯尔

Kubernetes 源码分析 Kubernetes源码 #Kubernetes#

Go- 接口-3

HelloBug

interface Go 语言

惊讶!阿里大佬总结的图解Java小册火了,完整版笔记开放下载

Java~~~

Java 架构 面试 微服务 JVM

阿里技术专家亲码:满干货“Redis核心笔记”,全篇无尿点

Java~~~

Java redis 架构 面试 中间件

双非本科跨专业5面京东,8600小时后收到通知,流下喜悦泪水

Java~~~

Java 架构 面试 微服务 JVM

算法2021版第0期毕业总结

bin

Python开发篇——添加mysqlclient

DisonTangor

Python MySQL

Django 配置夯实,再补充几个配置项,够够的了

梦想橡皮擦

9月日更

阿里进阶专用:Mycat权威指南,不怕从零开始,只怕从未启程

Java~~~

Java MySQL 数据库 架构 面试

谈 C++17 里的 Builder 模式

hedzr

c++ 设计模式

k8s garbage collector源码分析(1)-启动分析

良凯尔

Kubernetes 源码分析 Kubernetes源码 #Kubernetes#

架构作业 - 模块一

Leo Zhao

架构实战营

Fil价格强势上涨!fil的行情走势如何?Fil未来五年多少钱一枚?

区块链 分布式存储 fil币未来价格预估消息 fil大涨 fil价格行情

Java + opencv 实现老照片特效滤镜

张音乐

OpenCV 图像处理 9月日更 特效 老照片

设计微博系统中”微博评论“的高性能高可用计算架构

架构0期-Bingo

奉若神明!阿里技术专家开源ApacheDubbo核心源码笔记

Java~~~

Java spring 架构 面试 dubbo

极客时间【架构实战营】第二期 模块二作业

Geek_91606e

架构实战营

香!阿里技术官甩我一份283页Java核心笔记,竟含9大核心

Java~~~

Java 架构 面试 JVM 多线程

背完这套Java面试八股文,自动解锁面试牛逼症被动技能

北游学Java

Java 数据库 面试 算法 开发框架

阿里技术专家,紧跟潮流,解读spring微服务架构技术的演进

Java~~~

Java 架构 面试 微服务 Spring Cloud

激动!阿里技术官纯手打,1263页并发编程全系笔记,限时开源

Java~~~

Java 架构 面试 多线程 并发

🌏【架构师指南】带你彻底认识Paxos算法、Zab协议和Raft协议的原理和本质

洛神灬殇

ZAB raft协议 paxos协议 9月日更

架构实战营-模块二作业

^_^

架构实战营

图解 | Linux内存回收之LRU算法

程序员 架构 面试

从基础到实战!阿里P9用28天,总结出这份亿级活动高并发系统设计手册

Java 架构 面试 后端 高并发

架构师实战营 附一作业(按接口隔离原则优化设计无人机引导直升机攻击的类图)

代廉洁

架构实战营

【架构实战营作业】模块二——朋友圈高性能架构

聆息

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