服務套裝組合名稱是以階層形式定義。
每個 VM (以 VM 名稱識別) 都是 SDV Core 設定檔作業系統的單一部署作業。
每個套件 (由套件名稱識別) 可以包含多個服務組合。
每個服務套件 (由服務套件名稱識別) 都可在同一部 VM 上多次例項化。
每個服務套件執行個體都會指派服務套件執行個體名稱,以在載入時間識別。
SDV VM 名稱
VM 名稱是附加至每個 SDV Core 設定檔部署作業的專屬名稱 ID,如車輛 VM 設定 (vvmconfig) 中所指定。VM 名稱會用於命名,做為車輛中 VM 邊界服務的邏輯分隔。例如:
cdcmechatronicspcutelematics-unit
須遵守這些命名限制。
- VM 名稱開頭必須是英文字母
[a-z] - VM 名稱結尾不得為連字號
- 虛擬機器名稱不得超過 31 個字元
- 所有字元都必須是小寫英數字元或連字號
[a-z0-9\-] - 名稱中的連字號不得連續出現超過一次
在編譯時間 (靜態分析) 和系統啟動時載入 vvmconfig 時,系統會驗證 VM 名稱是否不重複。
如果開機時驗證失敗,就會發生開機層級錯誤。
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 中的服務套件可在同一個 VM 上多次安裝及載入。因此,同一個服務套件可以在同一個 AAOS SDV VM 中執行多個例項。系統會為這些執行個體指派使用者可判讀的服務套件執行個體名稱。例如:
front-leftfront-rightmainclientsubscriber
相關限制如下:
執行個體名稱必須符合下列規定:
- 以英文字母開頭
[a-z] - 結尾不得為連字號
- 不得超過 47 個字元
- 在同一部 VM 上,相同服務的名稱不得重複
- 以英文字母開頭
所有字元都必須是小寫英數字元或連字號
[a-z0-9\-]連字號不得連續出現
每個服務執行個體都必須有專屬的執行個體名稱 (在啟動服務時提供或建立)。
服務套件執行個體完整名稱 (FQIN)
SDV VM 名稱、套件名稱、服務套件名稱和服務套件執行個體名稱會合併為完整服務套件執行個體名稱 (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 VM (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 個字元 | 包含 VM 名稱、套件名稱、服務套件名稱和服務套件執行個體名稱。 | 小寫 |
| SDV VM 名稱 | 30 個字元 |
|
小寫 |
| SDV 套件名稱 | 127 個字元 |
|
小寫 |
| 服務組合名稱 | 30 個字元 |
|
混合大小寫 |
| 服務套件執行個體名稱 | 48 個半形字元 |
|
小寫 |
| 主題名稱 | 127 個字元 |
|
小寫 |
| 頻道名稱 | 127 個字元 |
|
小寫 |
| 服務單位名稱 | 48 個半形字元 |
|
小寫 |