协议
解析器
在 fuchsia.component.resolution/resolver.fidl 中定义
用于将网址解析为组件的接口。
此接口由为加载具有特定网址协议的组件提供支持的组件实现。例如,Fuchsia 软件包组件解析器会公开一个具有此接口的服务,以使用“fuchsia-pkg://”架构解析组件网址。
如需使用解析器来解析领域内的网址,请在领域的清单中注册该解析器。
注意:组件管理器是此接口的唯一预期直接客户端。
解决
使用给定的绝对网址解析组件。
component_url 是要解析的组件的未转义网址。
如果成功,则返回有关已解析组件的信息。
如果失败,则返回 ResolverError 错误。
请求
| 名称 | 类型 |
|---|---|
component_url |
string:2083
|
响应
| 名称 | 类型 |
|---|---|
payload |
Resolver_Resolve_Result
|
ResolveWithContext
使用绝对或相对网址解析组件。如果是相对路径,则该组件将相对于提供的 context 进行解析。
component_url 是要解析的组件的未转义网址,其格式可以是以下任一格式:
- 完全限定的绝对组件网址;或
- 子打包组件引用,其前缀是相对于其包含子包的 URI 相对路径(例如
child_package#meta/some_component.cm)
context 是先前解析的 Component 的 resolution_context,为解析相对网址提供上下文。
请求
| 名称 | 类型 |
|---|---|
component_url |
string:2083
|
context |
Context
|
响应
| 名称 | 类型 |
|---|---|
payload |
Resolver_ResolveWithContext_Result
|
STRUCTS
上下文
在 fuchsia.component.resolution/component.fidl 中定义
组件解析上下文,在解析相对于另一个组件的组件网址时使用。上下文存储在字节数组中,该数组会保留目标 Resolver 用于通过相对路径(例如,通过子软件包名称)定位和解析组件的值。
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
bytes |
vector<uint8>:8192
|
无默认应用 |
Resolver_ResolveWithContext_Response 资源
在 fuchsia.component.resolution/resolver.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
component |
Component
|
无默认应用 |
Resolver_Resolve_Response 资源
在 fuchsia.component.resolution/resolver.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
component |
Component
|
无默认应用 |
枚举
ResolverError strict
类型:uint32
在 fuchsia.component.resolution/resolver.fidl 中定义
ComponentResolver 返回的可能错误条件。
| 名称 | 值 | 说明 |
|---|---|---|
INTERNAL |
1 |
发生意外错误。 |
IO |
2 |
发生了常规 IO 错误。 |
INVALID_ARGS |
3 |
组件网址格式不正确。 |
NOT_SUPPORTED |
4 |
网址中指定的代码库不受支持。 |
MANIFEST_NOT_FOUND |
5 |
找不到组件清单。 |
PACKAGE_NOT_FOUND |
6 |
找不到组件的软件包。 |
NO_SPACE |
7 |
设备上的空间不足,无法存储组件的软件包。 |
RESOURCE_UNAVAILABLE |
8 |
该组件暂时不可用。 |
INVALID_MANIFEST |
9 |
无法解析组件清单,或组件清单包含无效配置。 |
CONFIG_VALUES_NOT_FOUND |
10 |
该组件指定了配置字段,但未找到相应的值。 |
ABI_REVISION_NOT_FOUND |
11 |
找不到 ABI 修订版本文件。 新增:12
|
INVALID_ABI_REVISION |
12 |
无法解析 ABI 修订版本值。 新增:12
|
TABLES
组件资源
在 fuchsia.component.resolution/component.fidl 中定义
组件是一个可执行软件单元。
此对象提供组件的声明、对其软件包内容的访问权限以及相关元数据(解析为 fuchsia.component.resolution.Resolver)。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
2 |
decl |
fuchsia.mem/Data
|
组件声明 ( |
3 |
package |
Package
|
包含该组件的软件包。 按照惯例,组件的软件包在运行时会映射到其命名空间中的“/pkg”。 如果组件未表示为软件包,则此值为 null。
在这种情况下,运行程序负责从 大多数运行程序(包括但不限于内置 ELF 运行程序)都需要软件包的目录连接具有 OPEN_RIGHT_EXECUTABLE 权限,才能运行解析后的组件。 |
4 |
config_values |
fuchsia.mem/Data
|
组件配置值 ( |
5 |
resolution_context |
Context
|
用于解析相对于此组件的
可通过 |
6 |
abi_revision |
fuchsia.version/AbiRevision
|
已解析组件的目标 ABI 修订版本。 新增:10
|
软件包资源
在 fuchsia.component.resolution/package.fidl 中定义
软件包是不可变文件的签名集合。
此对象可用于访问软件包的内容和相关元数据。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
url |
string:2083
|
软件包本身的网址。 |
2 |
directory |
client_end:fuchsia.io/Directory
|
软件包的内容目录。 |
UNIONS
Resolver_ResolveWithContext_Result strict resource
在 fuchsia.component.resolution/resolver.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Resolver_ResolveWithContext_Response
|
|
2 |
err |
ResolverError
|
Resolver_Resolve_Result strict resource
在 fuchsia.component.resolution/resolver.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Resolver_Resolve_Response
|
|
2 |
err |
ResolverError
|
常量
| 名称 | 值 | 类型 | 说明 |
|---|---|---|---|
| MAX_COMPONENT_URL_LENGTH |
2083
|
uint32 |
组件网址的最大长度。 |
| MAX_RESOLUTION_CONTEXT_SIZE |
8192
|
uint32 |
|