Platforma Software Defined Vehicle (SDV) zawiera wiele katalogów VSIDL w bazie kodu. Plik CATALOG_UPDATE zapewnia scentralizowaną konfigurację każdego katalogu, umożliwiając zarówno automatyczne aktualizacje, jak i integrację ze środowiskiem IDE.
Rola pliku CATALOG_UPDATE
Plik CATALOG_UPDATE służy do 2 głównych celów:
- Automatyczne aktualizacje: plik umożliwia narzędziu
regeneratorznajdowanie i ponowne kompilowanie wszystkich katalogów w systemie, gdy kompilator lub zależności ulegną zmianie. - Obsługa protokołu Language Server Protocol (LSP): serwer języka VSIDL używa tego pliku do wykrywania katalogu głównego i rozwiązywania zależności. Umożliwia to korzystanie z funkcji takich jak „Przejdź do definicji”, autouzupełnianie i weryfikacja w czasie rzeczywistym typów zdefiniowanych w innych katalogach.
Konfigurowanie katalogu
Aby włączyć automatyczne aktualizacje i obsługę LSP w katalogu VSIDL, utwórz plik CATALOG_UPDATE w katalogu głównym katalogu. Ten plik jest plikiem protobuf w formacie tekstowym.
Pola konfiguracji katalogu
output_path(ciąg tekstowy, opcjonalny): ścieżka względna od katalogu głównego do katalogu, w którym powinien zostać umieszczony wygenerowany kod oprogramowania pośredniczącego.dependency_catalog_paths(powtarzający się ciąg znaków): lista ścieżek względnych do innych katalogów. Serwer LSP używa tych ścieżek do rozpoznawania typów zewnętrznych.vsidlc_gen_args(ciąg znaków, opcjonalny): argumenty przekazywane dovsidlc. Serwer LSP sprawdza je, aby zastosować prawidłowe reguły sprawdzania poprawności (np."--apex").prebuilts_output_path(ciąg znaków, opcjonalnie): ścieżka do wygenerowanych gotowych konfiguracji środowiska wykonawczego.prebuilts_filegroup(ciąg znaków, opcjonalny): nazwafilegroupSoong dla gotowych plików.
Przykładowa konfiguracja
# 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"
Dlaczego automatyczne aktualizacje są potrzebne
Ręczne utrzymywanie wygenerowanego kodu dla każdego katalogu jest problematyczne z kilku powodów:
- Aktualizacje kompilatora: gdy kompilator jest aktualizowany o poprawki błędów lub nowe funkcje, wszystkie wygenerowane kody i pliki, które nie są objęte dyrektywą
genrulew plikuAndroid.bp, powinny zostać odświeżone, aby zachować spójność. - Zarządzanie zależnościami: zmiany w katalogu podstawowym często wymagają ponownego wygenerowania katalogów podrzędnych.
- Dokładność: automatyczne aktualizacje zmniejszają ryzyko błędu człowieka podczas określania ścieżek i zależności.
Uruchamianie narzędzia do ponownego generowania
Narzędzie regenerator przechodzi przez drzewo katalogów, zaczynając od katalogu głównego SDV, i szuka plików o nazwie CATALOG_UPDATE.
Aby zaktualizować wszystkie skonfigurowane katalogi:
Utwórz narzędzie:
m regeneratorUruchom narzędzie:
regeneratorOpcjonalnie możesz uruchomić je rekurencyjnie dla określonego katalogu:
console regenerator --root /path/to/directory
Narzędzie aktualizuje wygenerowane pliki i wykonuje pełną kompilację (m droid), aby sprawdzić, czy zmiany są zgodne z resztą systemu.