百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

谷歌 Fuchsia OS 进入开发者测试阶段,它真的会代替安卓吗

toyiye 2024-06-21 11:56 7 浏览 0 评论

作者 | Evana Margain

译者 | 明明如月

整理 | 夕颜,责编 | 唐小引

出品 | CSDN(ID:CSDNnews)

在过去的 8 到 10 年里,移动市场一直被两个我们都熟悉的系统所主导: 安卓和 iOS。我们总是认为现在了解的事物永远不会结束,但是随着科技的发展,谷歌已经不再这么认为。自 2016 年 8 月以来,谷歌一直致力于研发全新操作系统 Fuchsia。在预想中,这个“通用”的操作系统能够无缝运行于所有平台,如智能设备、平板电脑和智能手机。一些人认为它可能是 Android 的终结者。

在这篇文章中,我们来深入了解一下这个被称为“Fuchsia”的操作系统,并讨论它是否真的能替代安卓。

预计已进入开发者试用阶段

据外媒的最新消息,谷歌新操作系统Fuchsia OS的开发已经接近尾声,进入开发者亲自试用的阶段。

据说,谷歌在软件开发周期中会进行多轮测试,在让普通用户测试之前,通常会有一个开发人员亲自上阵的“狗粮”测试期,也就是让开发者亲自安装使用操作系统,通过亲身感受找到系统的优点和不足。“狗粮”测试很可能是谷歌将开发产品推向公众之前的最后一次全公司范围的测试阶段。

除了阿尔法和贝塔等正常公共测试,谷歌还会有很多内部测试,如小范围的“鱼食”测试,以及在“鱼食”和“狗粮”之间的“团队食品”测试阶段,等等,过程繁复严苛。

这次外媒之所以声称Fuchsia OS已接近尾声,就是因为他们发现在过去的一年里,有迹象表明,至少Fuchsia OS下一代操作系统的部分功能已经经历了鱼食阶段和团队食品阶段的开发测试,而在最近Fuchsia OS的一些代码变化中,出现了“为狗粮发行版本”准备的字样,这代表着一些开发者可能已经启动了“狗粮测试”。

如果最终的内部测试进展顺利,谷歌完全有可能提前把Fuchsia OS测试版提交给第三方开发者,进入“开发者测试阶段”。

虽然近期由于新冠病毒的全球蔓延,MWC、Facebook F8开发者大会相继取消,但是谷歌却暂时没有取消2020年度I/O大会的迹象。不久前,谷歌还正式放了I/O开发者大会的注册通道,入场券的价格为1150美元,学术类通行证售价375美元。

然而,特殊情况下一切皆有变数,2020年度I/O大会能否顺利举行,以及是否会在大会上公布Fuchsia OS开发测试版,还是要打上大大的问号。

Fuchsia OS项目的起源、发展

自从4年前,也就是2016年8月15日公布初始版本之前,Fuchsia OS就一直笼罩在一层神秘的色彩之下,直到2019年Fuchsia OS的开发者网站Fuchsia.dev上线,Fuchsia OS的神秘面纱才被彻底揭开。

为了更好地了解它,下面我们来简单回顾下Fuchsia OS的起源与发展历程的时间轴:

  • 2016年8月,媒体报道了发布于GitHub上的神秘源码,显示Google正在开发一个名为“Fuchsia”的新操作系统,虽然官方没有正式公布,其源码检查显示其能够跨平台运行,包括“汽车的娱乐媒体系统和嵌入式设备,如红绿灯、数字手表、智能手机、平板电脑与个人电脑”。

  • 2017年5月,外媒首次发布关于Fuchsia的新用户界面的文章,此后多家媒体提到“Fuchsia项目”和Android似乎有密切联系,有人猜测Fuchsia可能是“重做”或替换Android以在某种程度上修复该平台上的问题。

  • 2017年11月,对Swift语言提供了初始支持。

  • 2018年1月3日,Google允许开发者以Google Pixelbook为目标设备,下载Fuchsia OS进行开发与测试。

  • 2018年4月,Fuchsia的源代码出现在AOSP的ART当中,疑似是AOSP已经开始将ART移植至Fuchsia上,但源代码仍处于被注释处理的状态。

  • 2019年5月13日,在息壤开源镜像站和重庆大学镜像站 weerac 的努力下,Fuchsia OS 源码国内镜像正式上线。国内开发者们可以通过 git 方式获得主 repo 核心代码;以及从镜像站获取完整代码,包括第三方代码,以及单独的 tar 包,Fuchsia 镜像同时提供每日当天打包的源码包。

图源:Fuchsia中文社区

  • 2019年6月28日,Fuchsia OS的开发者网站Fuchsia.dev上线。

  • 2020年2月,Fuchsia OS预计已进入开发者试用阶段。

Fuchsia OS和之前的操作系统有何不同?

在谷歌 Fuchsia 开发者入门指南开头, Fuchsia这样描述这个项目: “ Pink(粉色) + Purple(紫色) == Fuchsia (Fuchsia,一种新的操作系统)”。

Fuchsia OS开发者入门指南:

https://fuchsia.dev/fuchsia-src/getting_started。关于入门指南,参考下文详细解释。

乍一看,这个短语只是颜色的定义以及这个产品是一个操作系统的明确声明。但事实并非如此。Pink 是指苹果第一个面向对象的微内核操作系统,而 Purple 是苹果 iPhone 的第一个代号。我的第一反应是... 为啥和苹果纠缠不清?

微内核操作系统

首先需要注意的是,该系统与基于Linux的Android或Chrome操作系统不同,Fuchsia源于一种名为“Zircon”操作系统微内核,是支持Fuchsia的核心平台。Fuchsia还提醒开发者,Fuchsia的构建过程将考虑进Zircon的副作用,因此,为了顺利单独使用Zircon,需要按照Zircon指南文档的指导进行:https://fuchsia.dev/fuchsia-src/development/kernel/getting_started

内核是所有计算机的核心,是控制一切的基本程序。这里的“微”指的是非常小规模的东西。作为微内核,Fuchsia 可以在任何设备上运行,包括传统的电脑、手机和物联网设备(如你的冰箱或微波炉)。

Fuchsia支持跨设备使用

考虑到上面提到的:Fuchsia 是一个微内核操作系统,我们可以设想谷歌设计它的目的是让不同的设备使用相同操作系统。也许我们现在很少注意到,在你的手机和电脑上运行的操作系统其实是不同的。即使你有一台 Mac 和一台 iPhone,用户界面可能看起来很相似,但核心也是不同的。

那么问题来了: 跨设备使用相同的操作系统有什么好处?答案就是如果不同设备使用的操作系统相同,你只需要开发一个应用程序即可实现跨设备使用,唯一需要改变的是用户界面。这还需要考虑其他问题。例如,输入设备是不一样的,手机没有物理键盘,电脑不总是支持触摸手势,一些电脑可能不含 GPS 芯片或加速器等。这些都是谷歌需要考虑的因素。

支持多种编程语言

特别有意思的是你可以用 Xcode 11 构建 Fuchsia 。Fuchsia可以支持多种语言的应用程序,包括READMEC/C++FIDL、Go、Rust、Python、Flutter、Java、Swift、Dart。到目前为止,移动平台只支持一种本地语言,但未来可能支持多种编程语言。

2020年就可以用了

目前 Fuchsia 已经可以在一些设备上运行,比如Acer Switch 12、Intel NUC、Google Pixelbook。目前只能参考指南的介绍自行构建此系统,市面上还没有使用 Fuchsia 的产品。

动手构建一个Fuchsia系统尝鲜吧!

既然市面上还没有使用Fuchsia的产品,先动手尝下鲜也是极好的。

从Fuchsia开发者网站上给出的文档中,我们至少可以得到以下几个信息:

1. 这个构建过程叫做 pave (铺路)。

2. 你需要一台主机和一台目标设备。换句话说,你需要在计算机上构建它,然后将其传输到目标设备上。

3. 你可以在 Linux 和 Mac OS X 中使用它。

具体的构建过程是怎样的呢?我们慢慢来看。

前提

准备构建环境

  • Debian

1sudo apt-get install build-essential curl git python unzip
  • macOS

  1. 安装命令行工具:

1xcode-select --install
  1. 除了命令行工具外,还需要安装最新版本的Xcode。

获得来源

获得Fuchsia来源,需要根据指南下载,这个过程耗时将近60分钟,可按照文档操作:https://fuchsia.dev/fuchsia-src/development/source_code

构建Fuchsia

如果你在获取源代码的过程中将.jiri_root / bin添加到了路径中,则fx命令应该已经在路径中了。如果没有,该命令也可以作为scripts / fx使用。

1fx set core.x64 --with //bundles:kitchen_sink
2fx build

fx set命令可配置构建内容,并在默认输出目录out / default和out / default.zircon中生成构建规则和元数据。参数core.x64是指产品和电路板的定义,描述了你的Fuchsia设备已构建并可用的软件包。

运行Fuchsia的设备可以通过网络临时下载和安装软件包,在开发环境中,你的开发工作站就是这些临时软件包的来源。电路板和产品定义包含一组软件包,但是如果你需要添加其他软件包,请使用--with标签。此示例包括kitchen_sink,这个英文习语的意思是“几乎所有内容”。当你更加专注于开发时,你可能会使用更具体的--with选项,以减少构建时间。

fx build命令运行构建,将源代码转换为程序包和其他构建工件。如果你修改源代码,则可以通过单独重新运行fx build命令来进行增量构建。fx -i build启动监视程序,并在文件更改时自动进行构建。

有关更多详细信息,请参见基础构建系统指南:https://fuchsia.dev/fuchsia-src/concepts/build_system

其他选择:使用ccache加速构建

ccache通过缓存以前构建的工件来加速构建。如果设置了CCACHE_DIR环境变量并引用了存在的目录,则会自动启用ccache。

要覆盖默认行为,请将标签传递给fx set:

1--ccache # force use of ccache even if goma is available
2--no-ccache # disable use of ccache

Boot Fuchsia

从硬件安装和引导

要想Fuchsia在硬件上运行,需要用到paver,具体操作参见https://fuchsia.dev/fuchsia-src/development/hardware/paving

从QEMU引导

如果没有支持的硬件,则可以使用QEMU在仿真下运行Fuchsia。Fuchsia在prebuilt / third_party / qemu下包含QEMU的预构建二进制文件。

fx emu命令将使用本地构建的磁盘映像在QEMU中启动Fuchsia:

1fx emu

fx emu有各种标志来控制仿真器配置:

  • -N启用联网(请参见下文)。

  • --headless禁用图形(见下文)。

  • -c将其他参数传递给内核。

使用fx emu -h查看所有可用选项。

注意:在运行任何命令之前,你需要按照Explore Fuchsia部分中的说明进行操作。启用网络

为了使临时软件在仿真器中运行,必须配置IPv6网络。

在macOS上:安装“ http://tuntaposx.sourceforge.net/download.xhtml”。

在Linux上:运行sudo ip tuntap add dev qemu模式,点击用户$ USER && sudo ip link set qemu up

现在,仿真器可以在启用网络的情况下运行:

1fx mu -N

以上内容足以使临时软件(由fx serve提供服务)能够正常运行,其中包括许多工具,例如uname和fortune(如果已构建)。

另外,希望从仿真器访问Internet的用户还需要在仿真器TAP接口上配置某种方式的IP转发和IPv4支持。

Explore Fuchsia

在单独的shell中,启动开发更新服务器(如果尚未运行):

1fx serve

用网络启动Fuchsia。可以通过-N标志在QEMU中完成此操作,也可以在已安装的硬件上完成。当Fuchsia启动并显示“ $” shell提示符后,就可以运行程序了!

例如,要获得deep wisdom,运行:

1fortune

要关闭或重新启动Fuchsia,使用dm命令:

1dm shutdown
2dm reboot

更改一些来源

Fuchsia系统上几乎所有的东西都存储在Fuchsia的包装中。通常的开发工作流程包括重建Fuchsia软件包并将其推送到开发设备或QEMU虚拟设备。

在examples / rolldice / src / main.rs中更改rolldice二进制文件。

重新构建rolldice软件包并将其推入运行中的Fuchsia设备,方法是:

1fx build-push rolldice

在Fuchsia设备的shell提示符下,使用以下命令运行更新的rolldice组件:

1rolldice

选择一个标志

启用了图形的引导后,Fuchsia显示多个选项卡。当前选择的选项卡在屏幕顶部以黄色突出显示。

以下键盘快捷键可以浏览终端:

  • Alt + Tab在选项卡之间切换。

  • Alt + F {1,2,...}直接切换到选项卡。

    • Tab 0是控制台,该控制台显示引导和组件日志。

    • Tab 1、2和3包含shell。

    • Tab 4和更多包含你已启动的组件。

  • Alt +上/下按行上下滚动。

  • Shift + PgUp / PgDown上下滚动半页。

  • Ctrl + Alt + Delete重新启动。

注意:要选择Tab,你可能需要输入“控制台模式”。有关详细信息,请参见下一部分。启动图形组件警告:QEMU不支持Vulkan,因此无法运行我们的图形堆栈。本节中的命令不适用于QEMU。

Fuchsia中的大多数图形组件都使用Scenic系统合成器。你可以启动通常在/ system / apps中的此类组件,如下所示:

1present_view fuchsia-pkg://fuchsia.com/spinning_square_view#meta/spinning_square_view.cmx

当你启动使用Scenic的东西,使用硬件加速的图形或构建默认程序包(将引导至Fuchsia System UI)时,Fuchsia将进入“图形模式”,该模式将不显示任何文本样式。为了使用文本样式,你需要按Alt-Escape进入“控制台模式”。在控制台模式下,Alt-Tab将可以进行上文所述才做,再次按Alt-Escape可返回图形样式。

运行测试

和其他组件一样,已编译的测试二进制文件也缓存在pkgfs中,并由URI引用。你可以在终端中调用来运行测试。例如:

1run fuchsia-pkg://fuchsia.com/ledger_tests#meta/ledger_unittests.cmx

如果要让Fuchsia保持运行状态,然后重新编译并重新运行测试,就在一个终端中启用联网的情况下运行Fuchsia,然后在另一终端中运行:

1fx test <test name> [<test args>]

如果要进一步操作,可以参考以下链接,篇幅所限,不能一一详解:

https://fuchsia.dev/fuchsia-src/development

真的能完全代替安卓/Chrome OS吗?

本文是对谷歌 Fuchsia 的一个系统性的总结,谷歌目前还尚未做出关于这个系统的任何回应和评价。

自Fuchsia诞生之初,围绕它是否会成为改变操作系统格局的深水炸弹之争就一直存在。据说,Fuchsia开发团队里有35名,约1/4的开发人员也是安卓的开发人员。另据传闻,Google的设计副总裁 Matias Duarte (也是 Material Design 的创始人)可能也参与到了Fuchsia项目,与安卓千丝万缕的关系,让Fuchsia与安卓之间的关系更是好奇。

一些专家认为,手握“跨平台”优势的Fuchsia将是操作系统领域下一个可以取代安卓操作系统的“大杀器”,谷歌不会放弃这个机会,而有人认为技术变化得如此之快,再加上华为鸿蒙OS的推出赶上日程,有媒体猜测,鸿蒙可能将打通手机、电脑、平板、电视、汽车和智能穿戴等多种设备的统一操作系统,并兼容全部安卓应用和所有Web应用。届时,在操作系统领域,Fuchsia还将面临更多竞争,到底谁将替代安卓/Chrome OS,是否足够强大到能够替代,还有待时间的验证。

按照这份入门指南,你现在应该可以上手自行创建一个Fuchsia系统了,试用的感受如何?和安卓Chrome OS相比,它用起来更简单方便吗?欢迎留言告诉我你的想法。

参考链接:

https://medium.com/better-programming/google-fuchsia-androids-replacement-code-in-mobile-5ebafe8eb11a

本文为CSDN编译文章,转载请注明出处。

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码