AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

揭晓 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:0716498
用户头像
罗燕珊 AI practitioner | Tech media

发布了 523 篇内容, 共 382.4 次阅读, 收获喜欢 842 次。

关注

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

如何让你的 WordPress 网站更安全

海拥(haiyong.site)

WordPress 5月月更

云原生小课堂 | 如何打造一款软硬兼施、多功能、零损耗的云原生网络方案

York

云原生 性能 智能网卡vpc 容器网络方案

租房开放源码

源字节1号

租房小程序

druid 源码阅读 3——DataSource的结构(变量)

张大彪

【刷题第七天】15 三数之和

白日梦

5月月更

Autograd解析|OneFlow学习笔记

OneFlow

人工智能 深度学习 数学原理 Autograd模块

探讨企业知识管理的困惑

小炮

企业知识管理

FlyFish2.0版本后端源码学习笔记

云智慧AIOps社区

前端 大前端 数据可视化 大屏可视化

答题交互功能深入研究

CRMEB

封装格式介绍

Loken

音视频 5月月更

CMMI研究院刚刚推出两门新认证课程

高山

培训 CMMI 确保安全 确保安防

使用 OData 实施 SAP 系统与第三方系统集成的步骤概述

汪子熙

系统集成 SAP OData 5月月更 第三方系统

自开发 Web 应用如何使用 SAP Customer Data Cloud 实现自定义登入功能

汪子熙

用户权限 第三方登录 SAP 登录验证 5月月更

网站开发进阶(六十一)详解js中Number()、parseInt()和parseFloat()的区别

No Silver Bullet

5月月更 Number() parseInt() parseFloat()

web前端培训单元测试入门知识分享

@零度

单元测试 web前端开发

druid源码学习三-继续探究DruidDataSource类init方法

Nick

Apache Druid

Docker下的OpenResty三部曲之二:细说开发

程序员欣宸

Docker 5月月更

从服务端生成Excel电子表格(GcExcel + SpreadJS)

葡萄城技术团队

服务器端开发 前端表格控件 测试比较

【直播回顾】OpenHarmony知识赋能五期第四课——子系统音频解读

OpenHarmony开发者

OpenHarmony 多媒体

数据库连接池 -Druid 源码学习(三)

wjchenge

Druid 数据库连接池

增强现实(AR)技术在企业管理软件中的一个实际创新案例

汪子熙

AR SAP 虚拟现实 增强现实 5月月更

专访朱雷:昔日的游戏少年,如今的Python工匠

图灵教育

Python 程序员 图灵访谈

java培训Nginx 快速入门

@零度

JAVA开发

Druid 连接池源码阅读 03

石小天

你肯定听说过requests,但你知道2022年有一个比 requests 还牛的爬虫库吗?

梦想橡皮擦

5月月更

C语言_结构体总结

DS小龙哥

5月月更

【高并发】高并发环境下诡异的加锁问题(你加的锁未必安全)

冰河

并发编程 多线程 高并发 协程 异步编程

前端生成PDF,让后端刮目相看

葡萄城技术团队

PDF pdf.js

从服务端生成Excel电子表格(Node.js+SpreadJS)

葡萄城技术团队

SpreadJS 前端表格

【大数据培训】面试中数据仓库重要概念

@零度

数据仓库 大数据开发

浅析微服务全链路灰度解决方案

阿里巴巴云原生

阿里云 微服务 云原生 灰度

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