服务包名称以层次结构定义。
每个虚拟机(由虚拟机名称标识)都是 SDV Core 配置文件操作系统的单个部署。
每个软件包(通过软件包名称进行标识)可以包含多个服务包。
每个服务包(由服务包名称标识)可在同一虚拟机上多次实例化。
每个服务软件包实例都由加载时间分配的服务软件包实例名称标识。
SDV 虚拟机名称
虚拟机名称是附加到 SDV 核心配置文件(如车辆虚拟机配置 (vvmconfig) 中所指定)的每个部署的唯一名称标识符。在命名中,虚拟机名称用于在车辆中沿虚拟机边界逻辑分离服务。例如:
cdcmechatronicspcutelematics-unit
您需遵循以下命名限制。
- 虚拟机名称必须以字母开头
[a-z] - 虚拟机名称不得以连字符结尾
- 虚拟机名称不得超过 31 个字符
- 所有字符必须为小写字母数字或连字符
[a-z0-9\-] - 名称中的连字符不得连续出现多次
在编译时(静态分析)和系统启动时(当加载 vvmconfig 时),系统会验证虚拟机名称是否唯一。
当启动时的验证失败时,会发生启动级错误。
SDV 软件包名称
与标准 Android 类似,SDV 软件包名称可唯一标识部署在系统上的软件包。必须为每个软件包名称提供唯一的 APEX。 例如:
com.android.sdv.datatunnelcom.android.sdv.sample.datatunnelcom.yourcompany.sdv.adas
需要遵循以下限制:
- 所有合作伙伴自有 SDV APEX 都应以
com.<companyname>.sdv.为前缀(com.android.sdv.保留给 Google 自有 SDV APEX)。 - 所有字符必须为字母数字或下划线
[a-z0-9_]。 - 软件包名称必须包含至少四个以英文句点分隔的段。
- 软件包名称不得以句点结尾。
- 软件包名称不得超过 127 个字符。
- 每段必须以字母开头。
- 任何细分都不能包含连续的下划线 (
__)。 - 任何分段都不能以下划线
_结尾。 - 细分不得为空(不得有连续的句点)。
服务包名称
与标准 Android 类似,每个服务软件包都有一个人类可读的名称,该名称在所属的软件包名称中进行了命名空间化。例如:
SomeServiceImportantService
您需遵循以下命名限制:
- 服务包名称必须以大写字母开头
- 服务包名称不得为空
- 服务软件包名称不得超过 47 个字符
- 服务包名称不得包含连续的下划线,
__ - 服务包名称不得以英文下划线开头或结尾,
_ - 所有字符都必须是字母数字字符或下划线,
[A-Za-z0-9_]
服务包实例名称
与标准 Android 应用不同,AAOS SDV 中的服务软件包可以在同一虚拟机上多次安装和加载。因此,同一服务软件包可以在同一 AAOS SDV 虚拟机中运行多个实例。系统会为这些实例分配人类可读的服务软件包实例名称。例如:
front-leftfront-rightmainclientsubscriber
需要遵循以下限制:
实例名称必须:
- 以字母
[a-z]开头 - 不得以连字符结尾
- 不超过 47 个字符
- 在同一虚拟机上,对于同一服务而言,必须是唯一的
- 以字母
所有字符必须为小写字母数字或连字符
[a-z0-9\-]连字符不得连续出现
每个服务实例都必须具有唯一的实例名称(在服务启动时提供或创建)。
完全限定的服务软件包实例名称 (FQIN)
SDV 虚拟机名称、软件包名称、服务软件包名称和服务软件包实例名称会组合成一个完全限定的服务软件包实例名称 (FQIN)。它在整个车辆范围内唯一标识一个服务包实例。
请参见以下示例:
cdc:com.android.sdv.datatunnel.SomeService/instance1cdc:com.android.sdv.datatunnel.SomeService/instance2mechatronics:com.yourcompany.sdv.adas.TirePressure/front-leftmechatronics:com.yourcompany.sdv.adas.TirePressure/front-rightmechatronics:com.yourcompany.sdv.adas.TirePressure/rear-rightpcu:com.android.sdv.cluster.InfoProvider/acceleration
不同软件包中的服务包可以具有相同的服务包名称。例如,以下两个服务包(由各自的 FQIN 标识)部署在同一 SDV 虚拟机 (mechatronics) 中,具有相同的服务包名称 TirePressure:
mechatronics:com.yourcompany1.sdv.adas.TirePressure/defaultmechatronics:com.yourcompany2.sdv.adas.TirePressure/default
在此示例中,不会发生命名冲突,因为这两个服务软件包位于不同的软件包中(一个位于 com.yourcompany1.sdv.adas 中,另一个位于 com.yourcompany2.sdv.adas 中)。
主题名称
主题由字符串标识,对于给定的消息类型,这些字符串在整个车辆中是唯一的。
主题名称示例:
left-tirefront-windowengine-coolant-temp
限制条件:
- 必须为字母数字或连字符
[a-z0-9\-]。 - 必须以字母开头。
- 不得超过 127 个字符。
频道名称
频道由名称字符串标识。
频道名称示例:
main-controlhigh-prioritybackground
限制条件:
- 必须为字母数字或连字符
[a-z0-9\-]。 - 必须以字母开头。
- 不得超过 127 个字符。
服务单元名称
服务包开发者主要与主题和渠道进行互动。服务单元名称是底层实现细节,主要在使用 dumpsys 等调试工具时遇到。
服务单元在向 SDV 服务发现注册时,必须提供服务单元名称。此服务单元名称在服务发现时可用。以下示例展示了带有 FQIN 的服务单元名称:
( cdc:com.android.sdv.adas.Service1/default-inst , tp-provider )( cdc:com.yourcompany.sdv.adas.TirePressure/instance1 , tp-provider-1 )( mech:com.yourcompany.sdv.adas.TirePressure/instance2 , tp-instance )
单元类型名称
单位类型名称与(完全限定的)Protobuf 类型名称相同。例如:
com.android.sdv.datatunnel.IComponentHandlercom.android.sdv.datatunnel.IComponentHandlercom.yourcompany.sdv.adas.TirePressurecom.android.sdv.cluster.IWheelInfoCallbackcom.android.sdv.cluster.ISeatAlignmentCallback
摘要
下表汇总了命名要求:
| 项 | 限制 | 允许的字符 | 支持请求类型 |
|---|---|---|---|
| FQIN | 256 个字符 | 由虚拟机名称、软件包名称、服务软件包名称和服务软件包实例名称组成。 | 小写 |
| SDV 虚拟机名称 | 30 个字符 |
|
小写 |
| SDV 软件包名称 | 127 个字符 |
|
小写 |
| 服务包名称 | 30 个字符 |
|
大小写混用 |
| 服务包实例名称 | 48 个字符 |
|
小写 |
| 主题名称 | 127 个字符 |
|
小写 |
| 频道名称 | 127 个字符 |
|
小写 |
| 服务单元名称 | 48 个字符 |
|
小写 |