组件标识符

组件框架使用不同的标识符来描述组件。 本部分介绍了以下组件之间的关系 及其用途:

  • 组件网址:将组件标识为 由组件解析器抓取
  • 名称:用于标识 组件实例树。

组件网址

组件网址 是一个网址,用于查找 组件,包括其声明、程序和资源。组件框架 使用组件解析器将组件网址解析为 组件声明

用法

组件网址的主要用途是在定义中标识某个组成部分, 作为子声明的一部分:

{
    children: [
        {
            name: "logger",
            url: "fuchsia-pkg://fuchsia.com/logger#logger.cm",
        },
    ],
}

上面的示例将 logger 组件声明为绝对资源 在软件包代码库中托管的 Fuchsia 软件包中。

组件框架也支持相对网址。

要标识内置于与父组件相同的软件包中的组件, 仅指定网址片段:

{
    children: [
        {
            name: "child",
            url: "#meta/child.cm",
        }
    ],
}

为了标识父级的子软件包中的组件 组件包中,请添加子包名称,后跟组件 清单路径(通过网址片段):

{
    children: [
        {
            name: "child",
            url: "child#meta/default.cm",
        }
    ],
}

相对组件网址通常用于测试,最佳做法是 将正式版组件重新打包到测试专用软件包中,以进行宣传 Hermeticity

有关组件网址语法的详情,请参阅 组件网址参考

名称

组件名称 是一个字符串,用于标识特定的 组件实例树中的组件实例。它 遵循与 fuchsia.io 路径类似的语义。

每个路径元素都是父组件为其子元素分配的名称, 最终找出“叶级组件”,对应最后一个路径 元素。

命名词始终与某些内容相关,例如父组件或 整个组件拓扑

用法

下面列举了一些组件名称:

  • .:自称。例如,根组件( 由 component_manager 启动的第一个组件)可通过使用 这个名称其他用途取决于具体情境。
  • alice/carol/sandy:组件实例的唯一标识 “沙地”作为“alice”的后代和“carol”
  • alice/support:dan:组件实例“dan”的唯一标识符 “support”中是“alice”的后代集合。

系统会将标记传递给开发者工具,例如 ffx component explore,用于标识特定组件 实例。它们也占据了 诊断选择器语法。

开发者工具实现会使用命名法 与目标设备上的特定组件实例进行交互。

有关组件名称语法的详情,请参阅 组件名称参考

设计原则

稳定性

标记就是稳定的标识符,前提是组件拓扑以 不会发生变化

隐私权

别名可能包含与其他组件相关的隐私敏感信息, 运行状态。

为了保留组件的封装,组件不能 确定在其自身之外运行的其他组件的名称 Realm.组件无法学习自己的名称、其父组件的名称或 兄弟姐妹们。

标记可能会显示在系统日志和开发者工具的输出中。