I nomi dei bundle di servizi sono definiti in una gerarchia.
Ogni VM (identificata da un nome VM) è un singolo deployment del sistema operativo del profilo SDV Core.
Ogni pacchetto (identificato da un nome pacchetto) può contenere più bundle di servizi.
Ogni bundle di servizi (identificato da un nome bundle di servizi) può essere istanziato più volte sulla stessa VM.
Ogni istanza del bundle di servizi è identificata da un nome istanza del bundle di servizi assegnato al tempo di caricamento.
Nome VM SDV
Il nome VM è un identificatore di nome univoco collegato a ogni deployment di un profilo SDV Core , come specificato in Vehicle VM Config (vvmconfig). Il nome VM viene utilizzato nella denominazione come separazione logica dei servizi lungo i limiti della VM in un veicolo. Ecco alcuni esempi:
cdcmechatronicspcutelematics-unit
Si applicano le seguenti limitazioni di denominazione.
- Il nome VM deve iniziare con una lettera
[a-z] - Il nome VM non deve terminare con un trattino
- Il nome VM non deve superare i 31 caratteri
- Tutti i caratteri devono essere alfanumerici minuscoli o un trattino
[a-z0-9\-] - I trattini nel nome non devono apparire consecutivamente più di una volta
Viene verificata l'univocità del nome VM durante il tempo di compilazione (analisi statica) e l'avvio del sistema quando viene caricato vvmconfig.
Si verifica un errore a livello di avvio quando la convalida al momento dell'avvio non riesce.
Nome pacchetto SDV
Analogamente ad Android standard, il nome del pacchetto SDV identifica in modo univoco un pacchetto di cui è stato eseguito il deployment sul sistema. Per ogni nome pacchetto deve essere fornito un APEX univoco. Ad esempio:
com.android.sdv.datatunnelcom.android.sdv.sample.datatunnelcom.yourcompany.sdv.adas
Si applicano le seguenti limitazioni:
- Tutti gli APEX SDV di proprietà dei partner devono avere il prefisso
com.<companyname>.sdv.(com.android.sdv.è riservato agli APEX SDV di proprietà di Google). - Tutti i caratteri devono essere alfanumerici o un trattino basso,
[a-z0-9_]. - Il nome del pacchetto deve contenere almeno quattro segmenti delimitati da un punto.
- Il nome del pacchetto non deve terminare con un punto.
- Il nome del pacchetto non deve superare i 127 caratteri.
- Ogni segmento deve iniziare con una lettera.
- Nessun segmento può avere trattini bassi consecutivi,
__. - Nessun segmento può terminare con un trattino basso,
_. - I segmenti non devono essere vuoti (nessun punto consecutivo).
Nome bundle di servizi
Analogamente ad Android standard, ogni bundle di servizi ha un nome leggibile, che è nello spazio dei nomi del pacchetto a cui appartiene. Ad esempio:
SomeServiceImportantService
Si applicano le seguenti limitazioni di denominazione:
- Il nome del bundle di servizi DEVE iniziare con una lettera maiuscola
- Il nome del bundle di servizi NON DEVE essere vuoto
- Il nome del bundle di servizi NON DEVE superare i 47 caratteri
- Il nome del bundle di servizi NON DEVE avere trattini bassi consecutivi,
__ - Il nome del bundle di servizi NON DEVE iniziare o terminare con un trattino basso,
_ - Tutti i caratteri DEVONO essere alfanumerici o un trattino basso,
[A-Za-z0-9_]
Nome istanza del bundle di servizi
A differenza delle applicazioni Android standard, i bundle di servizi in AAOS SDV possono essere installati e caricati più volte sulla stessa VM. Di conseguenza, lo stesso bundle di servizi può avere più istanze in esecuzione nella stessa VM AAOS SDV. A queste istanze viene assegnato un nome istanza del bundle di servizi leggibile. Ad esempio:
front-leftfront-rightmainclientsubscriber
Si applicano le seguenti limitazioni:
Il nome dell'istanza deve:
- Iniziare con una lettera
[a-z] - Non terminare con un trattino
- Non superare i 47 caratteri
- Essere univoco sulla stessa VM per lo stesso servizio
- Iniziare con una lettera
Tutti i caratteri devono essere alfanumerici minuscoli o un trattino
[a-z0-9\-]I trattini non devono apparire consecutivamente
Ogni istanza di servizio deve avere un nome istanza univoco (fornito o creato all'avvio del servizio).
Nome istanza del bundle di servizi completo (FQIN)
Il nome VM SDV, il nome del pacchetto, il nome del bundle di servizi e il nome dell'istanza del bundle di servizi vengono combinati in un nome istanza del bundle di servizi completo (FQIN). Identifica in modo univoco un'istanza del bundle di servizi a livello di veicolo.
Alcuni esempi:
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
I bundle di servizi in pacchetti diversi possono avere lo stesso nome di bundle di servizi. Ad esempio, questi due bundle di servizi (identificati dai rispettivi FQIN), di cui è stato eseguito il deployment nella stessa VM SDV (mechatronics), hanno lo stesso nome di bundle di servizi TirePressure:
mechatronics:com.yourcompany1.sdv.adas.TirePressure/defaultmechatronics:com.yourcompany2.sdv.adas.TirePressure/default
In questo esempio, non si verifica alcuna collisione di denominazione perché i due bundle di servizi si trovano in pacchetti diversi (uno in com.yourcompany1.sdv.adas e l'altro in com.yourcompany2.sdv.adas).
Nome argomento
Gli argomenti sono identificati da stringhe univoche nel veicolo per un determinato tipo di messaggio.
Esempi di nomi di argomenti:
left-tirefront-windowengine-coolant-temp
Restrizioni:
- Deve essere alfanumerico o un trattino,
[a-z0-9\-]. - Deve iniziare con una lettera.
- Non deve superare i 127 caratteri.
Nome del canale
I canali sono identificati da una stringa di nome.
Esempi di nomi di canali:
main-controlhigh-prioritybackground
Restrizioni:
- Deve essere alfanumerico o un trattino,
[a-z0-9\-]. - Deve iniziare con una lettera.
- Non deve superare i 127 caratteri.
Nome unità di servizio
Gli sviluppatori di bundle di servizi interagiscono principalmente con argomenti e
canali. I nomi delle unità di servizio sono un dettaglio di implementazione sottostante e vengono riscontrati principalmente quando si utilizzano strumenti di debug come dumpsys.
Quando le unità di servizio vengono registrate con SDV Service Discovery, è necessario fornire un nome unità di servizio. Questo nome unità di servizio è disponibile al momento della rilevamento dei servizi. Questi esempi mostrano i nomi delle unità di servizio con 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 )
Nomi dei tipi di unità
I nomi dei tipi di unità sono uguali ai nomi dei tipi Protobuf (completi). Ad esempio:
com.android.sdv.datatunnel.IComponentHandlercom.android.sdv.datatunnel.IComponentHandlercom.yourcompany.sdv.adas.TirePressurecom.android.sdv.cluster.IWheelInfoCallbackcom.android.sdv.cluster.ISeatAlignmentCallback
Riepilogo
I requisiti di denominazione sono riassunti nella tabella seguente:
| Elemento | Limite | Caratteri consentiti | Tipo di custodia |
|---|---|---|---|
| FQIN | 256 caratteri | Composto da nome VM, nome pacchetto, nome bundle di servizi e nome istanza del bundle di servizi. | Minuscolo |
| Nome VM SDV | 30 caratteri |
|
Minuscolo |
| Nome pacchetto SDV | 127 caratteri |
|
Minuscolo |
| Nome bundle di servizi | 30 caratteri |
|
Misto |
| Nome istanza del bundle di servizi | 48 caratteri |
|
Minuscolo |
| Nome argomento | 127 caratteri |
|
Minuscolo |
| Nome del canale | 127 caratteri |
|
Minuscolo |
| Nome unità di servizio | 48 caratteri |
|
Minuscolo |