组件框架使用不同的标识符来描述组件。本部分介绍了以下组件标识符之间的关系及其用法:
组件网址
组件网址是用于定位组件(包括其声明、程序和资源)的网址。组件框架使用组件解析器将组件网址解析为组件声明。
用法
组件网址的主要用途是在组件实例的定义中标识组件,作为子声明的一部分:
{
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",
}
],
}
相对组件网址通常用于测试,在测试中,最佳实践是在专门的测试软件包中重新打包正式版组件,以提高密封性。
如需详细了解组件网址语法,请参阅组件网址参考文档。
标识名
组件标识符:这是一个字符串,用于使用拓扑路径标识组件实例树中的特定组件实例。它遵循与 fuchsia.io
路径类似的语义。
每个路径元素都是父级组件为其子级分配的名称,最终用于标识与最后一个路径元素对应的“叶子组件”。
标识名始终是相对于某个对象的:父组件或整个组件拓扑的根。
用法
以下是一些组件标识符示例:
.
:自引用标识名。例如,可以使用此标识符引用根组件(由component_manager
启动的第一个组件)。其他用途取决于上下文。alice/carol/sandy
:将组件实例“sandy”唯一标识为“alice”和“carol”的后代。alice/support:dan
:将组件实例“dan”作为“alice”派生的“support”集合中的元素进行唯一标识。
别名会传递给开发者工具(例如 ffx component explore
),以便在目标设备上识别特定组件实例。它们还构成了诊断选择器语法的第一个部分。
开发者工具实现使用标识符与目标设备上的特定组件实例进行交互。
如需详细了解组件标识符语法,请参阅组件标识符参考文档。
设计原则
稳定性
只要指向该组件的组件拓扑不发生变化,标识名就是稳定的标识符。
隐私权
标识符可能包含与用户正在运行的其他组件相关的隐私敏感信息。
为了保留组件的封装,组件无法确定在其自身领域之外运行的其他组件的标识名。组件无法学习自己的标识名、其父级或同级兄弟姐妹的标识名。
标识符可能会显示在系统日志和开发者工具的输出中。