在开发过程中启动组件

出于测试和调试目的,ffx component 命令可在设备上快速启动动态组件实例

概念

设备上的组件实例通常使用组件清单进行声明,该清单会静态定义设备上组件的拓扑和功能。不过,在设备上创建组件实例的方法不止一种,静态声明组件就是其中之一。您还可以使用 ffx component 命令在运行时在设备上创建动态组件实例。

一个重要的区别是,Fuchsia 会限制所有动态组件实例在组件集合下运行。集合可用作动态组件实例的容器。因此,一个集合下组件实例的功能会受到该集合能够公开和提供的功能的限制。

虽然可以使用组件清单声明新的组件集合(类似于声明静态组件实例),但 Fuchsia 提供了一些常用的预定义集合。例如,ffx-laboratory 就是其中一个预定义集合。

启动组件

如需创建新的动态组件实例,您首先需要运行 ffx component create 以将新组件添加到设备上的组件实例树。添加完成后,您可以运行 ffx component start 以在设备上启动该组件。

如需在设备上启动新的动态组件实例,请执行以下操作:

  1. 创建新的组件实例:

    ffx component create <TARGET_MONIKER> <COMPONENT_URL>
    

    替换以下内容:

    • TARGET_MONIKER:新组件实例的目标名称。此名称必须在路径上包含一个组件集合。
    • COMPONENT_URL:组件的资源位置。

    以下示例会为 hello-world-cpp.cm 组件创建一个新的组件实例,并将其标识符分配为 /core/ffx-laboratory:hello-world

    $ ffx component create /core/ffx-laboratory:hello-world fuchsia-pkg://fuchsia.com/hello-world-cpp#meta/hello-world-cpp.cm
    URL: fuchsia-pkg://fuchsia.com/hello-world-cpp#meta/hello-world-cpp.cm
    Moniker: /core/ffx-laboratory:hello-world
    Creating component instance...
    
  2. 启动组件实例:

    ffx component start <TARGET_MONIKER>
    

    TARGET_MONIKER 替换为第 1 步中使用的名称。

    以下示例会在 /core/ffx-laboratory:hello-world 启动组件实例:

    $ ffx component start /core/ffx-laboratory:hello-world
    Moniker: /core/ffx-laboratory:hello-world
    Starting component instance...
    

在 ffx-laboratory 下启动组件

启动动态组件实例通常需要运行一系列 ffx component createffx component start 命令(请参阅启动组件)。不过,ffx component run 命令可以在单个命令行中启动动态组件实例。

如需快速启动 ffx-laboratory 集合下的组件,请运行以下命令:

ffx component run /core/ffx-laboratory:<NAME> <COMPONENT_URL>

COMPONENT_URL 替换为组件的资源位置,并将 NAME 替换为 ffx-laboratory 集合中的组件实例的名称。

以下示例会在设备上启动 hello-world-cpp.cm 组件:

$ ffx component run /core/ffx-laboratory:hello-world-cpp fuchsia-pkg://fuchsia.com/hello-world-cpp#meta/hello-world-cpp.cm
URL: fuchsia-pkg://fuchsia.com/hello-world-cpp#meta/hello-world-cpp.cm
Moniker: /core/ffx-laboratory:hello-world-cpp
Creating component instance...
Starting component instance...

本质上,ffx component run 命令会执行以下步骤:

  1. 运行 ffx component create,以在 ffx-laboratory 集合下创建一个新的组件实例,并使用组件名称作为目标名称。
  2. 运行 ffx component start 以在设备上启动组件实例。

例如,在上例中运行 ffx component run /core/ffx-laboratory:hello-world-cpp fuchsia-pkg://fuchsia.com/hello-world-cpp#meta/hello-world-cpp.cm 相当于运行以下命令:

$ ffx component create /core/ffx-laboratory:hello-world-cpp fuchsia-pkg://fuchsia.com/hello-world-cpp#meta/hello-world-cpp.cm
$ ffx component start /core/ffx-laboratory:hello-world-cpp

停止组件

如需停止设备上正在运行的组件实例,请运行以下命令:

ffx component stop <TARGET_MONIKER>

TARGET_MONIKER 替换为组件实例的标识名。

以下示例会在 /core/ffx-laboratory:hello-world 处停止组件实例:

$ ffx component stop /core/ffx-laboratory:hello-world
Moniker: /core/ffx-laboratory:hello-world
Stopping component instance...

销毁组件

如需从设备上的组件实例树中移除动态组件实例,请运行以下命令:

ffx component destroy <TARGET_MONIKER>

TARGET_MONIKER 替换为组件实例的标识名。

以下示例会移除 /core/ffx-laboratory:hello-world 处的组件实例:

$ ffx component destroy /core/ffx-laboratory:hello-world
Moniker: /core/ffx-laboratory:hello-world
Destroying component instance...