A plataforma de veículo definido por software (SDV, na sigla em inglês) contém vários catálogos 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 de IDE.
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 recompilasse todos os catálogos no sistema quando o compilador ou as dependências mudam. - Suporte ao protocolo do servidor de linguagem (LSP, na sigla em inglês):o servidor de linguagem VSIDL usa esse arquivo para descobrir a raiz do catálogo e resolver dependências. Isso permite recursos como "Acessar definição", preenchimento automático e validação em tempo real para tipos definidos em outros catálogos.
Configurar um catálogo
Para ativar atualizações automáticas e suporte a LSP para um catálogo VSIDL, crie um arquivo CATALOG_UPDATE no diretório raiz do catálogo. Esse arquivo é um
protobuf de texto arquivo.
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 argumentos para aplicar as regras de validação corretas (por exemplo,"--apex").prebuilts_output_path(string, opcional): caminho para pré-builds de configuração de ambiente de execução gerados.prebuilts_filegroup(string, opcional): o nomefilegroupdo Soong para pré-builds.
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
A manutenção manual do código gerado para cada catálogo é problemática 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 uma
genruleem um arquivoAndroid.bpprecisam ser atualizados para manter a consistência. - Gerenciamento de dependências:as mudanças em um catálogo de base geralmente exigem que os catálogos downstream sejam regenerados.
- Precisão:as atualizações automatizadas reduzem o risco de erro humano ao especificar caminhos e dependências.
Executar a ferramenta regenerator
A ferramenta regenerator percorre a árvore de diretórios começando pela raiz da SDV e procura arquivos nomeados exatamente CATALOG_UPDATE.
Para atualizar todos os catálogos configurados:
Crie a ferramenta:
m regeneratorExecute a ferramenta:
regeneratorOpcionalmente, execute-a 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.