A plataforma de veículo definido por software (SDV, na sigla em inglês) contém vários catálogos de VSIDL
na base de código. O arquivo CATALOG_UPDATE fornece uma configuração centralizada
para cada catálogo, permitindo atualizações automatizadas e integração
com o ambiente de desenvolvimento integrado.
Função do arquivo CATALOG_UPDATE
O arquivo CATALOG_UPDATE tem duas finalidades principais:
- Atualizações automatizadas: o arquivo permite que a ferramenta
regeneratorencontre e recompile todos os catálogos no sistema quando o compilador ou as dependências mudarem. - Suporte ao protocolo de servidor de linguagem (LSP): o servidor de linguagem VSIDL usa esse arquivo para descobrir a raiz do catálogo e resolver dependências. Isso ativa recursos como "Ir para definição", preenchimento automático e validação em tempo real para tipos definidos em outros catálogos.
Configurar um catálogo
Para ativar as atualizações automáticas e o suporte ao LSP para um catálogo VSIDL, crie um arquivo CATALOG_UPDATE no diretório raiz do catálogo. Esse arquivo é um
protobuf de texto.
Campos de configuração do catálogo
output_path(string, opcional): o caminho relativo da raiz do catálogo para o diretório em que o código de middleware gerado precisa ser colocado.dependency_catalog_paths(string repetida): uma lista de caminhos relativos para outros diretórios de catálogo. O servidor LSP usa esses caminhos para resolver tipos externos.vsidlc_gen_args(string, opcional): argumentos transmitidos paravsidlc. O servidor LSP inspeciona esses arquivos para aplicar as regras de validação corretas (por exemplo,"--apex").prebuilts_output_path(string, opcional): caminho para as pré-compilações de configuração de ambiente de execução geradas.prebuilts_filegroup(string, opcional): o nome do Soongfilegrouppara pré-compilados.
Exemplo de configuração
# proto-file: //system/software_defined_vehicle/tools/regenerator/proto/catalog.proto
# proto-message: Catalog
output_path: ".."
dependency_catalog_paths: "../../../../../automotive_services/diagnostics/vsidl/v1"
vsidlc_gen_args: "--apex"
Por que as atualizações automáticas são necessárias
Manter manualmente o código gerado para cada catálogo é problemático por vários motivos:
- Atualizações do compilador: quando o compilador é atualizado com correções de bugs ou novos
recursos, todos os códigos e arquivos gerados que não estão cobertos por um
genruleem um arquivoAndroid.bpprecisam ser atualizados para manter a consistência. - Gerenciamento de dependências: as mudanças em um catálogo base geralmente exigem que os catálogos downstream sejam gerados novamente.
- Precisão: as atualizações automatizadas reduzem o risco de erros humanos ao especificar caminhos e dependências.
Executar a ferramenta de regeneração
A ferramenta regenerator percorre a árvore de diretórios a partir da raiz do SDV e
procura arquivos chamados exatamente CATALOG_UPDATE.
Para atualizar todos os catálogos configurados:
Crie a ferramenta:
m regeneratorExecute a ferramenta:
regeneratorSe quiser, execute-o de forma recursiva para um diretório específico:
console regenerator --root /path/to/directory
A ferramenta atualiza os arquivos gerados e realiza um build completo (m droid) para
verificar se as mudanças são compatíveis com o restante do sistema.