组件框架使用不同的标识符来描述组件。 本部分介绍了以下组件之间的关系 及其用途:
组件网址
答 组件网址 是一个网址,用于查找 组件,包括其声明、程序和资源。组件框架 使用组件解析器将组件网址解析为 组件声明。
用法
组件网址的主要用途是在定义中标识某个组成部分, 作为子声明的一部分:
{
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.组件无法学习自己的名称、其父组件的名称或 兄弟姐妹们。
标记可能会显示在系统日志和开发者工具的输出中。