Os nomes dos pacotes de serviços são definidos em uma hierarquia.
Cada VM (identificada por um nome de VM) é uma única implantação do sistema operacional do perfil principal do SDV.
Cada pacote (identificado por um nome de pacote) pode conter vários pacotes de serviços.
Cada pacote de serviços (identificado por um nome de pacote de serviços) pode ser instanciado várias vezes na mesma VM.
Cada instância de pacote de serviços é identificada por um nome de instância de pacote de serviços atribuído no tempo de carregamento.
Nome da VM do SDV
O nome da VM é um identificador exclusivo anexado a cada implantação de um perfil do SDV Core, conforme especificado na Configuração da VM do veículo (vvmconfig). O nome da VM é usado na nomenclatura como uma separação lógica de serviços ao longo dos limites da VM em um veículo. Por exemplo:
cdcmechatronicspcutelematics-unit
Essas restrições de nomenclatura são válidas.
- O nome da VM precisa começar com uma letra
[a-z] - O nome da VM não pode terminar com um hífen
- O nome da VM não pode ter mais de 31 caracteres
- Todos os caracteres precisam ser alfanuméricos minúsculos ou um hífen
[a-z0-9\-] - Os hífens no nome não podem aparecer consecutivamente mais de uma vez
O nome da VM é verificado para ser exclusivo durante o tempo de compilação (análise estática) e a inicialização do sistema quando o vvmconfig é carregado.
Um erro no nível da inicialização ocorre quando a validação falha durante a inicialização.
Nome do pacote do SDV
Assim como no Android padrão, o nome do pacote do SDV identifica exclusivamente um pacote implantado no sistema. Um APEX exclusivo precisa ser fornecido para cada nome de pacote. Exemplo:
com.android.sdv.datatunnelcom.android.sdv.sample.datatunnelcom.yourcompany.sdv.adas
As seguintes restrições são aplicadas:
- Todos os APEXs de SDV de propriedade do parceiro precisam ter o prefixo
com.<companyname>.sdv.(com.android.sdv.é reservado para APEXs de SDV de propriedade do Google). - Todos os caracteres precisam ser alfanuméricos ou um sublinhado,
[a-z0-9_]. - O nome do pacote precisa ter pelo menos quatro segmentos delimitados por ponto.
- O nome do pacote não pode terminar com um ponto final.
- O nome do pacote não pode ter mais de 127 caracteres.
- Cada segmento precisa começar com uma letra.
- Nenhum segmento pode ter sublinhados consecutivos,
__. - Nenhum segmento pode terminar com um sublinhado,
_. - Os segmentos não podem estar vazios (sem períodos consecutivos).
Nome do pacote de serviços
Assim como no Android padrão, cada pacote de serviços tem um nome legível por humanos, que é namespaceado no nome do pacote a que pertence. Exemplo:
SomeServiceImportantService
Estas restrições de nomenclatura são válidas:
- O nome do pacote de serviços PRECISA começar com uma letra maiúscula
- O nome do pacote de serviços NÃO PODE ficar em branco
- O nome do pacote de serviços NÃO PODE exceder 47 caracteres
- O nome do pacote de serviços NÃO PODE ter sublinhados consecutivos,
__ - O nome do pacote de serviços NÃO PODE começar ou terminar com um sublinhado,
_ - Todos os caracteres precisam ser alfanuméricos ou um sublinhado,
[A-Za-z0-9_]
Nome da instância do pacote de serviços
Ao contrário dos aplicativos Android padrão, os pacotes de serviços no SDV do AAOS podem ser instalados e carregados várias vezes na mesma VM. Como resultado, o mesmo pacote de serviços pode ter várias instâncias em execução na mesma VM de SDV do AAOS. Essas instâncias recebem um nome de instância do pacote de serviços legível. Exemplo:
front-leftfront-rightmainclientsubscriber
Estas restrições são válidas:
O nome da instância precisa:
- Começar com uma letra
[a-z] - Não terminar com um hífen
- Não exceder 47 caracteres
- Ser único na mesma VM para o mesmo serviço
- Começar com uma letra
Todos os caracteres precisam ser alfanuméricos minúsculos ou um hífen
[a-z0-9\-]Os hífens não podem aparecer consecutivamente
Cada instância de serviço precisa ter um nome de instância exclusivo (fornecido ou criado quando o serviço é iniciado).
Nome totalmente qualificado da instância do pacote de serviços (FQIN)
O nome da VM do SDV, o nome do pacote, o nome do pacote de serviços e o nome da instância do pacote de serviços são combinados em um nome totalmente qualificado da instância do pacote de serviços (FQIN, na sigla em inglês). Ele identifica exclusivamente uma instância de pacote de serviços em todo o veículo.
Alguns exemplos:
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
Pacotes diferentes podem ter o mesmo nome de pacote de serviços. Por exemplo, estes dois pacotes de serviços (identificados pelos respectivos FQINs), implantados na mesma VM do SDV (mechatronics), têm o mesmo nome de pacote de serviços TirePressure:
mechatronics:com.yourcompany1.sdv.adas.TirePressure/defaultmechatronics:com.yourcompany2.sdv.adas.TirePressure/default
Neste exemplo, não há conflito de nomenclatura porque os dois pacotes de serviços estão em pacotes diferentes (um em com.yourcompany1.sdv.adas e o outro em com.yourcompany2.sdv.adas).
Nome do tópico
Os tópicos são identificados por strings exclusivas no veículo para um determinado tipo de mensagem.
Exemplos de nomes de tópicos:
left-tirefront-windowengine-coolant-temp
Restrições:
- Precisa ser alfanumérico ou um hífen,
[a-z0-9\-]. - Precisa começar com uma letra.
- Não pode exceder 127 caracteres.
Nome do canal
Os canais são identificados por uma string de nome.
Exemplos de nomes de canais:
main-controlhigh-prioritybackground
Restrições:
- Precisa ser alfanumérico ou um hífen,
[a-z0-9\-]. - Precisa começar com uma letra.
- Não pode exceder 127 caracteres.
Nome da unidade de serviço
Os desenvolvedores de pacotes de serviços interagem principalmente com tópicos e canais. Os nomes das unidades de serviço são um detalhe da implementação subjacente e são encontrados principalmente ao usar ferramentas de depuração como dumpsys.
As unidades de serviço, quando registradas com a descoberta de serviços do SDV, precisam fornecer um nome de unidade de serviço. Esse nome de unidade de serviço está disponível no momento da descoberta de serviços. Estes exemplos mostram nomes de unidades de serviço com 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 )
Nomes de tipos de unidade
Os nomes de tipos de unidades são iguais aos nomes de tipos do Protobuf (totalmente qualificados). Exemplo:
com.android.sdv.datatunnel.IComponentHandlercom.android.sdv.datatunnel.IComponentHandlercom.yourcompany.sdv.adas.TirePressurecom.android.sdv.cluster.IWheelInfoCallbackcom.android.sdv.cluster.ISeatAlignmentCallback
Resumo
Os requisitos de nomenclatura estão resumidos na tabela a seguir:
| Item | Limite | Caracteres permitidos | Tipo de caso |
|---|---|---|---|
| FQIN | 256 caracteres | Composto por nome da VM, nome do pacote, nome do pacote de serviços e nome da instância do pacote de serviços. | Minúsculo |
| Nome da VM do SDV | 30 caracteres |
|
Minúsculo |
| Nome do pacote do SDV | 127 caracteres |
|
Minúsculo |
| Nome do pacote de serviços | 30 caracteres |
|
Uso misto de maiúsculas e minúsculas |
| Nome da instância do pacote de serviços | 48 caracteres |
|
Minúsculo |
| Nome do tópico | 127 caracteres |
|
Minúsculo |
| Nome do canal | 127 caracteres |
|
Minúsculo |
| Nome da unidade de serviço | 48 caracteres |
|
Minúsculo |