Platforma Software Defined Vehicle (SDV) zawiera w bazie kodu wiele katalogów VSIDL. Plik CATALOG_UPDATE zapewnia scentralizowaną konfigurację każdego katalogu, umożliwiając zarówno automatyczne aktualizacje, jak i integrację z 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 zmieni się kompilator lub zależności. - Obsługa protokołu serwera języka (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
Pola konfiguracji katalogu
output_path(string, 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(repeated string): 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(string, opcjonalnie): argumenty przekazywane dovsidlc. Serwer LSP sprawdza je, aby zastosować odpowiednie reguły weryfikacji (np."--apex").prebuilts_output_path(ciąg znaków, opcjonalnie): ścieżka do wstępnie skompilowanych plików konfiguracji środowiska wykonawczego.prebuilts_filegroup(ciąg znaków, opcjonalny): nazwa Soongfilegroupdla wstępnie skompilowanych 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 zostanie zaktualizowany o poprawki błędów lub nowe funkcje, cały wygenerowany kod i pliki, które nie są objęte
genrulew plikuAndroid.bp, należy odświeżyć, 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 ludzkiego podczas określania ścieżek i zależności.
Uruchom narzędzie do regeneracji
Narzędzie regenerator przeszukuje 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ć go rekurencyjnie w przypadku określonego katalogu:
console regenerator --root /path/to/directory
Narzędzie aktualizuje wygenerowane pliki i przeprowadza pełną kompilację (m droid), aby sprawdzić, czy zmiany są zgodne z pozostałą częścią systemu.