写点什么

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

发布了 343 篇内容, 共 166.9 次阅读, 收获喜欢 665 次。

关注

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

少些爹味才是好爹——再谈自主性

Justin

心理学 教育 28天写作 游戏设计

上万字详解Spark Core(建议收藏)

五分钟学大数据

大数据 spark 28天写作 3月日更

智慧公安二维码定位报警系统开发,微警务平台解决方案

源中瑞-龙先生

二维码定位报警系统开发 智慧公安 智慧公安扫码

TcaplusDB君 · 行业新闻汇编(3月17日)

TcaplusDB

数据库 nosql 后端 TcaplusDB Tcaplus

微信小程序开发:绑定手机号获取验证码功能

三掌柜

小程序 3月日更

朋友,你听说过跨域吗

河磨

spring CORS 跨域

JDK8新特性 Fork/Join 的优化

Java小咖秀

Java java8 jdk8 forkjoin fork

数据驱动业务:一张大屏掌控城市运行,效率提高95%

一只数据鲸鱼

物联网 数据可视化 智慧城市 智慧园区 智慧交通

第8周大作业

八达鸟

Oracle Sql性能优化

大数据技术指南

oracle 大数据 28天写作 3月日更

从容一些,不必赶「Day 25」

道伟

28天写作

C/C++ 性能优化背后的方法论:TMAM

vivo互联网技术

c c++ 性能优化 cpu

架构实践全景图

博文视点Broadview

怎么找属于自己最优的2B增长模型?

boshi

销售管理 SaaS 七日更

图解堆排序

Silently9527

Java 排序算法 堆排序

故事开始了,Python 图像算法取经之旅 365 天的第 1 天

梦想橡皮擦

28天写作 3月日更

知识图谱上的图神经网络

博文视点Broadview

EGG公链生态项目——EFTalk上的巴莱特定律

币圈那点事

区块链

“时间”都去哪儿了?性能调优分析方法与案例详解

京东科技开发者

数据库 客户端

JVM笔记 -- 来,教你类加载子系统

秦怀杂货店

Java JVM 类加载 虚拟机

架构师训练营第十一周作业 - 命题作业

阿德儿

拍乐云创始人&CEO赵加雨:深耕18载,打造全景式音视频服务

拍乐云Pano

音视频 WebRTC 在线教育 RTC 实时通信

沙龙报名 | 云计算进入多元架构,云原生时代的挑战与机遇

京东科技开发者

云计算 云原生

ECMAScript 2017(ES8)新特性简介

程序那些事

ecmascript 程序那些事 ecmascript 2017 es8

什么时候编程语言不重要

soolaugust

编程语言

有道技术沙龙 | AI 语音交互技术在语言学习场景的实践

有道技术团队

人工智能

SDK 是如何存储事件数据的?

神策技术社区

ios 大数据 存储 数据采集 神策数据

GoPath模式和GoMoudle模式的相爱相杀

happlyfox

28天写作 3月日更 Go 语言

电影AI修复,让重温经典有了新的可能

华为云开发者联盟

AI 电影 华为云视频 视频增强 经典

一招让Kafka达到最佳吞吐量

万俊峰Kevin

kafka go-zero Go 语言

寻找被遗忘的勇气(十七)

Changing Lin

3月日更

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