Android 的神话能否在 Google 打造的 Fuchsia 操作系统身上延续,或许挺难。
近日,有媒体发现大量与 Fuchsia 相关的代码已经被从 Android 开源项目(AOSP)中删除,删除的具体原因不明。不过这意味着在 Fuchsia 系统上运行的 Android、Linux 程序的方法似乎受阻。
Fuchsia:希望能够运行 Android、Linux 程序
过去几年来,Google 对于 Fuchsia 的期望,如同华为对 HarmonyOS 的期望一样,不指望其能够取代 Android,但都希望它们能够以一套操作系统实现横跨多平台的愿景,包括运行在智能手机、 PC、智能设备、物联网等设备之上。
不过,要为新的操作系统谋出路,首先也要兼容 Android、Linux 应用程序,这样才能实现生态互通。为此,Google 投入数以十亿美元计的资金来开发,然而有些遗憾的是,其成果寥寥无几。
截至目前,作为一套独立的操作系统,Fuchsia 支持的硬件设备只有 Nest Hub 和 Nest Hub Max 两款智能显示屏。
当然,并不是 Google 不想在其他设备上运行,从理论上来看,搭载 Fuchsia 系统的设备无缝替换 Chromebook 或 Android 手机来保持其平台上的应用程序正常运行,这种方法并非不可以。
过去一段时间里,据外媒报道,Google 也正在尝试一些办法,旨在让 Fuchsia 这款不是基于 Linux 的操作系统能够运行 Android、Linux 应用程序。譬如:
方法一:在虚拟机中运行 Android 操作系统的完整实例。
这是 Google 最早的尝试方法之一,因为那时 Google 在 Chrome OS 上已经有了成功开发的经验。彼时,通过在虚拟机上运行完整的 Linux 实例,Chrome OS 能够运行 Linux 应用程序。另外,Google 还用了相同的策略并发起了一个名为 arcvm 的项目,可以在 Chrome OS 上运行 Android 应用。
于是,Google 也想着可以将此应用到 Fuchsia 系统上。不过,这种方案如果应用到 Fuchsia 系统上会存在一些性能问题,如在“host”(Fuchsia)和“guest”(Android)之间管理文件可能有些棘手或繁琐。此外,Fuchsia 强调安全,试图尽可能地让程序相互隔离。为了保持 Linux 应用的这种隔离程度,Fuchsia 需要运行多个虚拟机,这就可能会降低性能。
方法二:通过 Android Runtime 支持 Android 应用程序。
早在 2019 年,有媒体发现 Fuchsia 可以使用 Android Runtime 运行 Android 程序。其背后是 Google 将两个与 Fuchsia 相关的存储库添加到了 Android 开源项目(AOSP)清单中。
这两个存储库分别是“platform/prebuilts/fuchsia_sdk”,其中包含了 Fuchsia SDK 的与构建副本,用于创建 Fuchsia 应用程序。第二个是“device/google/fuchsia”,这个项目中,Fuchsia 将使用专门设计的 Android 运行时版本(ART)来运行 Android 应用程序。这个版本的 ART 将使用 .far 文件安装在任何 Fuchsia 设备上,Fuchsia 相当于 Android 的 APK。
不过,在 2021 年 2 月,不少人发现 Android 内部 Fuchsia 项目的工作即“device/google/fuchsia”停滞不前。
本周,“device/google/fuchsia”的所有代码都从 Android 上删除了,这也标志着 Google 放弃了通过这条路径来让 Fuchsia 运行 Android 应用。
从 Android 系统中删除的 Fuchsia 代码
在删除 Fuchsia 相关代码后,目前,不知道 Google 的下一步计划是什么,但是据悉,负责此次更改的开发人员正在开发 Fuchsia 的“Starnix”项目。
所谓 Starnix 项目,最早于 2021 年被披露出来。该项目最初旨在运行 Fuchsia 原生支持运行 Android 和 Linux 应用程序和库。为了实现这一目标,Starnix 还将低级内核指令从 Linux 转换为 Fuchsia 的 Zircon 内核。
简单来看,Fuchsia 将通过 Starnix 系统,该系统将充当 Linux 内核指令和 Fuchsia 的 Zircon 内核指令之间的转换器,而并非让 Fuchsia 直接运行 Linux。
在 Starnix 作为提案被予以落地实践的一年以来,Google 做了大量的工作想要让 Android、Linux 与 Fuchsia 的 Zircon 内核兼容。为此,Google 提供了专用的 Starnix Shell,可以帮助开发者和发烧友玩 Fuchsia 工作站。
值得注意的是,这个 shell 不是简单的 Linux 设计,而是一个“包含在系统中的小型 Android 发行版”。日前,这一功能被替换为通过此 adb 命令访问 Fuchsia 和 Starnix 的 Android 功能,可以说与访问任何其他 Android 设备一样简单。
Google 发力 Fuchsia,一套系统走天下是否现实?
据 9to5google 报道,Google 下一步也正在准备组件 Fuchsia 的 Starnix 团队,用来主攻构建一个稳定且与 Android 及其应用程序兼容的解决方案。除此之外,谷歌的 Fuchsia 团队似乎仍在考虑打造智能家居以外的产品。Google 希望让 Fuchsia 成为一个类似 Android 的通用操作系统,与大量的 Android 应用程序兼容。
确实如此,如果 Fuchsia 不能与 Android 上超过 10 亿的用户、开发商以及制造商实现互通,那么即使再次借助开源,依然很难会有当初 Android 那样的盛世。
当然就当前的环境而言,一套系统走天下宛如程序员界梦寐以求的「write once,run anywhere」,这是否真的能实现?在 2021 长沙·中国 1024 程序员节的技术英雄会上,我们也曾持以同样的疑问咨询了国产操作系统领域的几位资深专家:
指令集创始人兼 CEO 潘爱民:
我觉得从我们早期做操作系统大多数都是从底层做起,但是我们最终的目标是为了平衡共性和个性化。从软件工程来讲,一次编写就能够到处使用,是一个理想点。
可能等到将来实现理想状态之后,我们不需要这么多的应用程序员。因为当程序用乌托邦的思想最终让程序写出来之后,会发挥更多的价值。今天在大多数的 B 类项目招标里面,好多都是把程序员当小时工来定价的,这是对程序员创造极大的贬低,因为他们只是写了一次程序,一次运行,没有第二次,这多么讽刺。然而,我们做操作系统追求的就是写一次可以到处使用,因此作为一种抽象的能力,这是我们追求的目标,而且在每一层上都要做到这一点。
随着挖掘的需求越来越充分,我们需要不断地把抽象的能力用在每一层上,这才是真正最终解决我们达到理想的软件世界,做到软件定义一切的关键。
理想汽车副总裁、算力与 OS 部门总负责人许迎春:
其实软件工程师有一个目标,就是想实现硬件工程师这个样子,如每个模块做芯片,封装以后就不用再改了,最终达到这一点的话就算我们实现了工程,否则的话永远是一个艺术。
大家都觉得硬件芯片无法修改,却不得不用,软件随时可以改,就导致了我们很轻易的放弃了对标准界面的定义。随着算力的不断增大,这种情况下是需要付出代价的。
百度主任架构师王柏生:
我说说我的看法:
第一个,我觉得操作系统会是一种百花齐放形式,可能很难说只有一种或者两种,因为大家可能会有个性化,或者是一些艺术方面的问题。
第二个,之前在传统操作系统里面有一个标准,该标准定义了一个良好的接口,承接上面的库和下面的标准。
我觉得操作系统当前会是百花齐放的状态,随着时间的推移,大家可能会定位标准,并向标准逐渐靠拢。
清华大学长聘副教授陈渝:
站在学校的角度来说,努力朝着「write once,run anyway」 这一愿景方向发展,但可能达不到。
我比较认同“操作系统就是一种百花齐放的状态”的说法。也正如许迎春老师所述,改硬件的成本太高,只有在改动成本越来越容易的情况下,我们就更容易实现百花齐放。
我感觉随着刚才说的算力的提高,我们的编程,或者是计算机技术的发展,也许将来更是一种百花齐放的方式,我们其实也在探索,一些数据结构,一些基本的控制逻辑都不一定是人去想,也许 AI 可以帮助我们做一些辅助的改动,这种情况下,我们的成本、代价会更高,在这种情况下我们怎么去构建一个符合应用需求的软件系统,不一定是操作系统,是一个软件系统,也许这就是一个新的问题。
我觉得这里面是要快速的去适应将来的需求,要达到这一点会是将来的趋势,而不是说我只做一个科目,只做某一块,你要做就做一个系统,这是我个人的感觉。
为此,你如何看待“一套系统走天下”这个愿景与 Fuchsia 的未来?
参考地址:
https://9to5google.com/2022/07/15/android-removes-fuchsia-code-starnix/
https://9to5google.com/2021/02/12/google-fuchsia-os-android-linux-programs-starnix/
— 推荐阅读 —