소프트웨어 정의 차량 (SDV) 플랫폼에는 코드베이스 전반에 걸쳐 수많은 VSIDL 카탈로그가 포함되어 있습니다. CATALOG_UPDATE 파일은 각 카탈로그에 중앙 집중식 구성을 제공하여 자동 업데이트와 IDE 통합을 모두 지원합니다.
CATALOG_UPDATE 파일의 역할
CATALOG_UPDATE 파일은 두 가지 주요 목적으로 사용됩니다.
- 자동 업데이트: 이 파일을 사용하면 컴파일러 또는 종속 항목이 변경될 때
regenerator도구가 시스템의 모든 카탈로그를 찾아 다시 컴파일할 수 있습니다. - 언어 서버 프로토콜 (LSP) 지원: VSIDL 언어 서버는 이 파일을 사용하여 카탈로그 루트를 검색하고 종속 항목을 해결합니다. 이렇게 하면 다른 카탈로그에 정의된 유형에 대해 '정의로 이동', 자동 완성, 실시간 검증과 같은 기능이 사용 설정됩니다.
카탈로그 구성
VSIDL 카탈로그에 자동 업데이트 및 LSP 지원을 사용 설정하려면 카탈로그의 루트 디렉터리에 CATALOG_UPDATE 파일을 만듭니다. 이 파일은 텍스트 protobuf 파일입니다.
카탈로그 구성 필드
output_path(문자열, 선택사항): 카탈로그 루트에서 생성된 미들웨어 코드를 배치할 디렉터리까지의 상대 경로입니다.dependency_catalog_paths(반복 문자열): 다른 카탈로그 디렉터리에 대한 상대 경로 목록입니다. LSP 서버는 이러한 경로를 사용하여 외부 유형을 확인합니다.vsidlc_gen_args(문자열, 선택사항):vsidlc에 전달되는 인수입니다. LSP 서버는 이를 검사하여 올바른 유효성 검사 규칙 (예:"--apex")을 적용합니다.prebuilts_output_path(문자열, 선택사항): 생성된 런타임 구성 사전 빌드의 경로입니다.prebuilts_filegroup(문자열, 선택사항): 사전 빌드의 Soongfilegroup이름입니다.
구성 예시
# 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"
자동 업데이트가 필요한 이유
모든 카탈로그에 대해 생성된 코드를 수동으로 유지보수하는 것은 여러 가지 이유로 문제가 됩니다.
- 컴파일러 업데이트: 컴파일러가 버그 수정 또는 새 기능으로 업데이트되면
Android.bp파일의genrule에서 다루지 않는 생성된 모든 코드와 파일을 새로고침하여 일관성을 유지해야 합니다. - 종속 항목 관리: 기본 카탈로그가 변경되면 다운스트림 카탈로그를 다시 생성해야 하는 경우가 많습니다.
- 정확성: 자동 업데이트는 경로와 종속 항목을 지정할 때 인적 오류의 위험을 줄입니다.
재생성 도구 실행
regenerator 도구는 SDV 루트에서 시작하여 디렉터리 트리를 탐색하고 이름이 정확히 CATALOG_UPDATE인 파일을 찾습니다.
구성된 모든 카탈로그를 업데이트하려면 다음 안내를 따르세요.
도구를 빌드합니다.
m regenerator도구를 실행합니다.
regenerator원하는 경우 특정 디렉터리에 대해 재귀적으로 실행합니다.
console regenerator --root /path/to/directory
도구는 생성된 파일을 업데이트하고 전체 빌드 (m droid)를 실행하여 변경사항이 나머지 시스템과 호환되는지 확인합니다.