Konfigurowanie środowiska IDE na potrzeby tworzenia SDV

Android Studio for Platform (ASfP) to zalecane zintegrowane środowisko programistyczne (IDE) do tworzenia programowalnych platform SDV (Software-Defined Vehicle) na system operacyjny Android Automotive (AAOS). ASfP obsługuje wszystkie języki używane przez platformę AAOS SDV, w tym Rust w przypadku pakietów usług SDV.

Ta strona dotyczy tylko konfiguracji SDV. Więcej informacji o ogólnych funkcjach i przepływach pracy ASfP znajdziesz w artykule Android Studio for Platform.

ASfP działa tylko na 64-bitowym systemie Linux z procesorami x86-64. Możesz go używać na lokalnej stacji roboczej z systemem Linux lub w chmurze. Więcej informacji o konfiguracji w chmurze znajdziesz w artykule o programowaniu w chmurze.

Instalowanie ASfP

Domyślny maksymalny rozmiar sterty w ASfP to 30 GB. Indeksowanie platformy checkout wymaga dużej ilości pamięci, zwłaszcza gdy na tym samym komputerze uruchamiasz też urządzenia Cuttlefish z wieloma maszynami wirtualnymi. Ogranicz zakres projektu do katalogów, nad którymi pracujesz, i w razie potrzeby dostosuj maksymalny rozmiar sterty w ustawieniach pamięci ASfP.

ASfP obsługuje automatyczne aktualizacje w IDE. Więcej informacji znajdziesz w artykule Aktualizowanie Androida Studio for Platform. Więcej informacji o pobieraniu i instalowaniu ASfP oraz sprawdzaniu wymagań systemowych znajdziesz w artykule Instalowanie Android Studio for Platform.

Tworzenie projektu SDV

Zanim zaczniesz, zainicjuj, zsynchronizuj i skompiluj proces płatności SDV w AAOS. Więcej informacji o konfigurowaniu procesu płatności znajdziesz w sekcjach Lokalizacja kodu oraz Pobieranie, kompilowanie i uruchamianie.

Aby utworzyć projekt SDV, wykonaj te czynności:

  1. Utwórz nowy projekt w ASfP i wybierz katalog główny kasy AAOS SDV jako kasę repozytorium. Więcej informacji o krokach kreatora znajdziesz w artykule Tworzenie i importowanie projektu.
  2. Gdy ASfP utworzy projekt, wybierz ASfP > Project > Open Config (ASfP > Projekt > Otwórz konfigurację), aby otworzyć plik .asfp-project.
  3. Zastąp zawartość pliku tym przykładem, a następnie ustaw repo na ścieżkę do kasy:

    repo: /path/to/sdv_source
    lunch: sdv_core_cf-aosp_current-userdebug
    directories:
      include:
        -   system/software_defined_vehicle/samples
    other_languages:
      -   rust
    
  4. Zaktualizuj lunch i directories dla obszaru, nad którym pracujesz. Aby indeksowanie i synchronizacja przebiegały szybko, uwzględnij tylko te katalogi, które aktywnie modyfikujesz. W tabeli poniżej znajdziesz listę typowych elementów docelowych i katalogów SDV:

    SDV development focus lunch cel Zalecane: directories
    Pakiety usług SDV sdv_core_cf-aosp_current-userdebug katalog usług i pakietów, np. system/software_defined_vehicle/samples;
    Integracja z platformą SDV Core sdv_core_cf-aosp_current-userdebug system/software_defined_vehicle/middleware, system/software_defined_vehicle/automotive_services, device/google/sdv
    Brama SDV w samochodowym systemie multimedialnym SDV sdv_ivi_cf-aosp_current-userdebug system/software_defined_vehicle/sdv_gateway, system/software_defined_vehicle/samples/sdv_gateway, packages/services/Car
    Wyświetlanie informacji o bezpieczeństwie na ekranie SDV sdv_media_har_cf-aosp_current-userdebug packages/services/display_safety, device/google/sdv_display_safety
    Bezpieczeństwo wyświetlania w samochodowym systemie multimedialnym SDV sdv_ivi_cf_ds-aosp_current-userdebug packages/apps/Car/DriverUI, packages/services/display_safety/service

    Jeśli proces płatności korzysta z pliku manifestu trunk_staging, zastąp -aosp_current-userdebug ciągiem -trunk_staging-userdebug. Aby przeglądać też kod platformy natywnej, dodaj cpp do other_languages. Więcej informacji o wszystkich opcjach konfiguracji znajdziesz w artykule Parametry konfiguracji.

  5. Aby zastosować zmiany, wybierz ASfP > Sync > Sync Project (ASfP > Synchronizuj > Synchronizuj projekt). Więcej informacji o trybach synchronizacji (pełna, częściowa i bez kompilacji) oraz eksportowaniu i importowaniu szablonów .asfp-project, które można udostępniać zespołowi, znajdziesz w artykułach Tryby synchronizacji i okno narzędzia Soong oraz Szablony projektów, które można udostępniać (eksportowanie i importowanie).

Wdrażanie pakietów usług SDV

ASfP zawiera wtyczkę SDV, która wdraża plik APEX zawierający pakiety usług bezpośrednio na działającym urządzeniu SDV. Wtyczka jest domyślnie wyłączona. Aby go używać, włącz wtyczkę SDV w sekcji Ustawienia > Wtyczki. Więcej informacji o pakowaniu APEX znajdziesz w artykule Tworzenie i wdrażanie pakietów usług.

Sposób wdrażania zależy od tego, czy pakiet APEX jest już na urządzeniu:

  • Jeśli APEX jest już zainstalowany, możesz wdrożyć zmiany bezpośrednio z ASfP.
  • Jeśli APEX jest nowy, musisz najpierw ponownie utworzyć i uruchomić obraz systemu lub użyć obrazu systemu, który zawiera klucz użyty do podpisania APEX. Po tym czasie możesz wdrożyć usługę z ASfP.

Aby wdrożyć pakiet APEX pakietu usług, wykonaj te czynności:

  1. Uruchom urządzenie SDV z wtyczką Cuttlefish. Więcej informacji znajdziesz w artykule Uruchamianie urządzeń SDV na Cuttlefish.
  2. Otwórz plik apex/Android.bp pakietu usług i kliknij ikonę Uruchom w rynnie obok bloku apex {.
  3. W menu, które się otworzy, wybierz Run 'Deploy APEX_NAME' (Uruchom „Wdróż ”). W tym samym menu możesz też skompilować APEX bez wdrażania lub zmienić konfigurację uruchamiania.

Uruchamianie urządzeń SDV na Cuttlefish

ASfP zawiera wtyczkę Cuttlefish, która tworzy i uruchamia lokalne urządzenia Cuttlefish. Wtyczka wymaga koordynatora hosta Cuttlefish. Jeśli koordynator hosta jest niedostępny, ASfP wyświetla instrukcje jego konfiguracji.

Aby utworzyć urządzenie SDV, wykonaj te czynności:

  1. Wybierz Narzędzia > Menedżer urządzeń, kliknij + i wybierz Utwórz urządzenie Cuttlefish.
  2. Aby utworzyć konfigurację z wieloma maszynami wirtualnymi, wybierz Z konfiguracji kanonicznej i utwórz lub zaimportuj konfigurację, np. SDV Core z SDV IVI lub SDV Media z SDV IVI dla Display Safety. Aby utworzyć pojedynczą maszynę wirtualną, wybierz Z lokalnego wyewidencjonowania drzewa źródeł Androida.

Aby wyświetlić wszystkie wyświetlacze maszyn wirtualnych na jednym ekranie i uzyskać dostęp do dodatkowych opcji urządzenia, użyj okna narzędzia Cuttlefish. Aby go otworzyć, kliknij ikonę … w panelu bocznym i wybierz Cuttlefish lub wyszukaj Cuttlefish w sekcji Pomoc > Znajdź działanie. Możesz też wyświetlić poszczególne wyświetlacze w sekcji Działające urządzenia. SDV Core działa bez wyświetlacza, więc do jego sprawdzania używaj Logcata i terminala.

Debugowanie i testowanie

ASfP zawiera wbudowany debuger LLDB do kodu w językach C++ i Rust. Więcej informacji o debugowaniu i testowaniu w ASfP znajdziesz w artykułach Debugowanie kodu platformy, Debugowanie kodu Rust, Testowanie kodu platformy za pomocą atest i Debugowanie elementów docelowych cc_test i rust_test w LLDB.

Gdy dołączasz debuger do pakietu usług, dołącz go do procesu, który go hostuje. Nazwy procesów mają format <bundle_name>:<instance_name>, np. OrchestratorSampleRustServiceBundle:sample-main-no-conditions. To polecenie wyświetla listę pasujących procesów i ich identyfikatorów procesu:

adb shell ps -A | grep <bundle_name>

Więcej informacji o przepływach pracy debugowania SDV, takich jak łączenie się z wieloma urządzeniami i wyświetlanie dzienników, znajdziesz w artykule Debugowanie SDV.

Edytowanie plików VSIDL

ASfP zawiera serwer języka VSIDL (vsidl-lsp). Więcej informacji o konfigurowaniu katalogu na potrzeby serwera języka znajdziesz w artykule o automatycznych aktualizacjach katalogu i integracji z LSP. Gdy katalog zawiera plik CATALOG_UPDATE, edytor udostępnia te funkcje dotyczące plików .vsidl:

  • Weryfikacja na żywo: edytor wyróżnia słowa kluczowe VSIDL i wyświetla błędy składni, nierozwiązane typy i błędy weryfikacji VSIDLC w oknie Problemy. Więcej informacji o regułach weryfikacji i kodach błędów znajdziesz w specyfikacji języka VSIDL.
  • Autouzupełnianie i dokumentacja: możesz nacisnąć Ctrl + Spacja, aby wyświetlić sugestie dotyczące słów kluczowych, komunikatów, usług, tematów i kanałów, lub Ctrl + Q, aby wyświetlić komentarze do dokumentacji.
  • Nawigacja i formatowanie: możesz nacisnąć Ctrl + B, aby przejść do definicji .vsidl lub .proto, Alt + Shift + F7, aby znaleźć odwołania, Ctrl + F12, aby wyświetlić strukturę pliku, oraz Ctrl + Alt + L, aby sformatować plik.

Dodawanie kontekstu SDV dla asystentów AI

ASfP obejmuje AI w Android Studio i wbudowanego agenta z narzędziami do kompilacji Soong i atest. Więcej informacji o funkcjach opartych na AI w ASfP znajdziesz w artykule Poznaj Android Studio for Platform. Aby pomóc asystentowi AI w przestrzeganiu konwencji SDV, dodaj plik AGENTS.md do katalogu głównego katalogu VSIDL. Więcej informacji o plikach agentów znajdziesz w artykule Dostosowywanie Gemini za pomocą plików AGENTS.md.

Poniższy przykład to punkt wyjścia, który możesz dostosować do swojego katalogu:

# AAOS SDV service catalog rules

- Implement SDV service bundles in Rust under `services/<BundleName>/src/`.
- Keep `.proto` files limited to Protobuf `message`, `enum`, and `service` definitions. Define service bundles, APEX packaging, VM placement, and SOME/IP mappings in `.vsidl` files.
- Regenerate middleware with `vsidlc` after you change `.vsidl` or `.proto` files, and leave generated files unmodified.
- Use `PascalCase` for service bundle names and lowercase `kebab-case` for topic and channel names.
- Run `vsidlc --explain <CODE>` to look up a VSIDLC error code.