Namen von Service-Bundles werden in einer Hierarchie definiert.
Jede VM (identifiziert durch einen VM-Namen) ist eine einzelne Bereitstellung des Betriebssystems des SDV Core-Profils.
Jedes Paket (identifiziert durch einen Paketnamen) kann mehrere Service-Bundles enthalten.
Jedes Dienstpaket (identifiziert durch einen Dienstpaketnamen) kann mehrmals auf derselben VM instanziiert werden.
Jede Dienstbündelinstanz wird durch einen Dienstbündelinstanznamen identifiziert, der beim Laden zugewiesen wird.
SDV-VM-Name
Der VM-Name ist eine eindeutige Namenskennung, die jeder Bereitstellung eines SDV Core-Profils zugewiesen wird, wie in der Vehicle VM Config (vvmconfig) angegeben. Der VM-Name wird in der Namensgebung als logische Trennung von Diensten entlang der VM-Grenzen in einem Fahrzeug verwendet. Beispiele:
cdcmechatronicspcutelematics-unit
Es gelten die folgenden Namensbeschränkungen.
- Der VM-Name muss mit einem Buchstaben beginnen.
[a-z] - VM-Name darf nicht mit einem Bindestrich enden
- Der Name der VM darf nicht länger als 31 Zeichen sein.
- Alle Zeichen müssen alphanumerische Kleinbuchstaben oder ein Bindestrich
[a-z0-9\-]sein. - Bindestriche im Namen dürfen nicht mehr als einmal hintereinander vorkommen
Der VM-Name wird zur Kompilierzeit (statische Analyse) und beim Systemstart überprüft, wenn die vvmconfig geladen wird.
Ein Fehler auf Boot-Ebene tritt auf, wenn die Validierung beim Booten fehlschlägt.
SDV-Paketname
Ähnlich wie bei Standard-Android identifiziert der SDV-Paketname ein auf dem System bereitgestelltes Paket eindeutig. Für jeden Paketnamen muss ein eindeutiges APEX bereitgestellt werden. Beispiel:
com.android.sdv.datatunnelcom.android.sdv.sample.datatunnelcom.yourcompany.sdv.adas
Folgende Einschränkungen gelten:
- Alle SDV-APEX-Dateien, die Partnern gehören, müssen mit
com.<companyname>.sdv.beginnen (com.android.sdv.ist für SDV-APEX-Dateien reserviert, die Google gehören). - Alle Zeichen müssen alphanumerisch oder ein Unterstrich (
[a-z0-9_]) sein. - Der Paketname muss mindestens vier durch Punkte getrennte Segmente enthalten.
- Der Paketname darf nicht mit einem Punkt enden.
- Der Paketname darf nicht länger als 127 Zeichen sein.
- Jedes Segment muss mit einem Buchstaben beginnen.
- Kein Segment darf aufeinanderfolgende Unterstriche enthalten,
__. - Kein Segment darf mit einem Unterstrich (
_) enden. - Segmente dürfen nicht leer sein (keine aufeinanderfolgenden Zeiträume).
Name des Dienstpakets
Ähnlich wie bei Standard-Android hat jedes Dienstbündel einen für Menschen lesbaren Namen, der im Paketnamen des zugehörigen Dienstbündels enthalten ist. Beispiel:
SomeServiceImportantService
Für die Benennung gelten folgende Einschränkungen:
- Der Name des Dienstpakets MUSS mit einem Großbuchstaben beginnen
- Der Name des Servicepakets DARF NICHT leer sein.
- Der Name des Service-Bundles darf NICHT länger als 47 Zeichen sein.
- Der Name des Servicepakets DARF NICHT mehrere Unterstriche hintereinander enthalten,
__ - Der Name des Dienstpakets darf nicht mit einem Unterstrich beginnen oder enden,
_ - Alle Zeichen MÜSSEN entweder alphanumerisch oder ein Unterstrich sein:
[A-Za-z0-9_]
Name der Dienstbündelinstanz
Im Gegensatz zu standardmäßigen Android-Anwendungen können Dienst-Bundles in AAOS SDV mehrmals auf derselben VM installiert und geladen werden. Daher kann dasselbe Service-Bundle mehrere Instanzen haben, die in derselben AAOS SDV-VM ausgeführt werden. Diesen Instanzen wird ein menschenlesbarer Name der Dienstpaketinstanz zugewiesen. Beispiel:
front-leftfront-rightmainclientsubscriber
Es gelten folgende Einschränkungen:
Der Instanzname muss:
- Muss mit einem Buchstaben beginnen
[a-z] - Darf nicht mit einem Bindestrich enden
- Darf nicht mehr als 47 Zeichen enthalten
- Eindeutig auf derselben VM für denselben Dienst sein
- Muss mit einem Buchstaben beginnen
Alle Zeichen müssen alphanumerische Kleinbuchstaben oder ein Bindestrich
[a-z0-9\-]sein.Bindestriche dürfen nicht aufeinanderfolgen
Jede Dienstinstanz muss einen eindeutigen Instanznamen haben, der beim Starten des Dienstes angegeben oder erstellt wird.
Vollständig qualifizierter Name der Dienstbündelinstanz (Fully Qualified Instance Name, FQIN)
Der Name der SDV-VM, der Paketname, der Name des Service-Bundles und der Name der Service-Bundle-Instanz werden zu einem voll qualifizierten Namen der Service-Bundle-Instanz (Fully Qualified Instance Name, FQIN) kombiniert. Er identifiziert eine Service-Bundle-Instanz fahrzeugweit eindeutig.
Some examples:
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
Dienstbündel in verschiedenen Paketen können denselben Dienstbündelnamen haben. Die beiden Dienstbündel (identifiziert durch ihre jeweiligen FQINs), die in derselben SDV-VM (mechatronics) bereitgestellt werden, haben beispielsweise denselben Dienstbündelnamen TirePressure:
mechatronics:com.yourcompany1.sdv.adas.TirePressure/defaultmechatronics:com.yourcompany2.sdv.adas.TirePressure/default
In diesem Beispiel kommt es zu keinem Namenskonflikt, da sich die beiden Dienstbündel in verschiedenen Paketen befinden (eines in com.yourcompany1.sdv.adas und das andere in com.yourcompany2.sdv.adas).
Name des Themas
Themen werden durch Strings identifiziert, die für einen bestimmten Nachrichtentyp im gesamten Fahrzeug eindeutig sind.
Beispiele für Themennamen:
left-tirefront-windowengine-coolant-temp
Einschränkungen:
- Muss alphanumerisch oder ein Bindestrich (
[a-z0-9\-]) sein. - Muss mit einem Buchstaben beginnen.
- Darf nicht länger als 127 Zeichen sein.
Kanalname
Kanäle werden durch einen Namensstring identifiziert.
Beispiele für Kanalnamen:
main-controlhigh-prioritybackground
Einschränkungen:
- Muss alphanumerisch oder ein Bindestrich (
[a-z0-9\-]) sein. - Muss mit einem Buchstaben beginnen.
- Darf nicht länger als 127 Zeichen sein.
Name der Einheit der Telefongesellschaft
Entwickler von Service-Bundles interagieren hauptsächlich mit Themen und Channels. Dienstunit-Namen sind ein zugrunde liegendes Implementierungsdetail und werden hauptsächlich bei der Verwendung von Debugging-Tools wie dumpsys verwendet.
Wenn Dienst-Units bei SDV Service Discovery registriert werden, muss ein Name der Dienst-Unit angegeben werden. Dieser Name ist zum Zeitpunkt der Dienstermittlung verfügbar. In den folgenden Beispielen sehen Sie Namen von Dienst-Units mit FQINs:
( 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 )
Namen von Einheitstypen
Namen von Einheitstypen entsprechen (voll qualifizierten) Protobuf-Typnamen. Beispiel:
com.android.sdv.datatunnel.IComponentHandlercom.android.sdv.datatunnel.IComponentHandlercom.yourcompany.sdv.adas.TirePressurecom.android.sdv.cluster.IWheelInfoCallbackcom.android.sdv.cluster.ISeatAlignmentCallback
Zusammenfassung
Die Benennungsanforderungen sind in der folgenden Tabelle zusammengefasst:
| Element | Limit | Zulässige Zeichen | Falltyp |
|---|---|---|---|
| FQIN | 256 Zeichen | Besteht aus VM-Name, Paketname, Dienstbündelname und Dienstbündelinstanzname. | Kleinschreibung |
| SDV-VM-Name | 30 Zeichen |
|
Kleinschreibung |
| SDV-Paketname | 127 Zeichen |
|
Kleinschreibung |
| Name des Dienstpakets | 30 Zeichen |
|
Gemischte Groß-/Kleinschreibung |
| Name der Dienstbündelinstanz | 48 Zeichen |
|
Kleinschreibung |
| Name des Themas | 127 Zeichen |
|
Kleinschreibung |
| Kanalname | 127 Zeichen |
|
Kleinschreibung |
| Name der Einheit der Telefongesellschaft | 48 Zeichen |
|
Kleinschreibung |