Fuchsia运行demo

在研究源代码时,您可能已经注意到了examples目录。本指南将向您展示如何构建Fuchsia以包含一些示例,然后在设备上运行它们。

hello_world DEMO


打开examples/hello_world/BUILD.gn 文件。

如果你对GN不熟悉,看一下介绍性陈述或文档。简而言之,GN是一个元构建系统。它的输出文件作为Ninja(实际构建系统)的输入。

在这个文件中,hello_world目标是一个包含其他依赖项的组,尤其是cpp和rust。使用这个目标将同时构建它们。

group("hello_world") {
  testonly = true
  deps = [
    ":tests",
    "cpp",
    "rust",
  ]
}

**注意:**您可以查看 build/package.gni文件以了解更多关于GN如何定义Fuchsia包的信息。

这个例子输出Hello, world!并且是用c++和Rust编写的。每个依赖于语言的目录都有自己的构建。为特定示例定义包的gn文件,以及带有.cmx文件的元目录。

cmx文件被称为组件清单,描述了如何作为组件在Fuchsia上运行应用程序。这是创建Fuchsia包的正确方法。

:通过引用Fuchsia包URI运行Fuchsia组件。来运行其中一个例子:

  1. 确保fx服务在终端窗口中运行。如果它不运行,启动它:

    fx serve

  2. 在另一个终端,运行:

    fx shell run fuchsia-pkg://fuchsia.com/hello_world_cpp#meta/hello_world_cpp.cmx

这应该会失败,并显示一条消息,说明没有找到包。

注意: 如果成功并打印“Hello World!”,那么您当前的fx目标已经包含了这些示例。您可能需要修改目标并重新保存设备,然后返回到此页面继续。

将构建设置为包含示例


你可以在构建中包括这些例子,但你需要确定它们将包括在哪里:

  • Base:包含在生成的铺装映像中的包。它们包含在空中更新中,并且总是作为一个单元进行更新。
  • Cache:包括在铺装图像,但不包括在空中系统更新。这些包可以在任何可用的更新时间进行更新。
  • Universe:包是附加的可选包,可以按需获取和运行,但不预置到任何铺装映像中。

(有关更多信息,请参见fx工作流。)

要将此包包含在Universe中,以便按需获取,请在设置产品和董事会时使用—with标志:

fx set … --with //examples/hello_world
fx build

现在您有了一个包含示例的构建。

运行DEMO


  1. 确保fx服务在终端窗口中运行。如果它不运行,启动它:

    fx serve

  2. 在另一个终端,运行:

    fx shell run fuchsia-pkg://fuchsia.com/hello_world_cpp#meta/hello_world_cpp.cmx

您应该会看到以下输出:

Hello, World!

**重要:**如果fx服务没有运行,您应该会从设备中得到一个错误(例如,fuchsia-pkg://fuchsia.com/hello_world_cpp#meta/hello_world_cpp.cmx: not found)。

如果字符串只匹配产品配置中的一个组件,run命令可以将字符串展开为URI:

fx shell run hello_world_cpp

如果有多个匹配项,命令会列出它们供您选择:

fuchsia-pkg://fuchsia.com/hello_world_cpp#meta/hello_world_cpp.cmx
fuchsia-pkg://fuchsia.com/hello_world_rust#meta/hello_world_rust.cmx
Error: “hello” matched multiple components.

您可以使用locate命令研究产品配置中的组件。

  • 找到你最喜欢的组件。

fx shell locate hello_world_cpp

  • 找到所有可运行的组件。

fx shell locate --list cmx

  • 找到多个测试组件。

fx shell locate --list test

你可能感兴趣的:(Fuchsia)