Konfigurowanie środowiska IDE na potrzeby tworzenia SDV

Android Studio for Platform (ASfP) to zalecane zintegrowane środowisko programistyczne (IDE) do tworzenia platformy oprogramowania pojazdu (SDV) z systemem operacyjnym 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 związanej z 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 chmury znajdziesz w sekcji Tworzenie aplikacji w chmurze.

Instalowanie ASfP

Więcej informacji o pobieraniu i instalowaniu ASfP oraz sprawdzaniu wymagań systemowych znajdziesz w artykule Instalowanie Android Studio for Platform.

Indeksowanie platformy płatności zużywa dużo pamięci, zwłaszcza gdy na tym samym komputerze uruchamiasz też urządzenia Cuttlefish z wieloma maszynami wirtualnymi. Jeśli ASfP działa wolno, zwiększ maksymalny rozmiar sterty w ustawieniach pamięci ASfP, aby dopasować go do projektu i komputera, i ogranicz zakres projektu do katalogów, w których pracujesz.

Tworzenie projektu SDV

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

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

  1. Utwórz nowy projekt w ASfP i wybierz katalog główny wyewidencjonowania AAOS SDV jako wyewidencjonowanie repozytorium. Więcej informacji o krokach kreatora znajdziesz w artykule Tworzenie lub importowanie projektu.
  2. Gdy ASfP utworzy projekt, kliknij 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 płatności:

    repo: /path/to/sdv_source
    lunch: sdv_core_cf-aosp_current-userdebug
    directories:
      include:
        -   system/software_defined_vehicle/samples
    other_languages:
      -   rust
    
  4. Zaktualizuj wartości lunch i directories dla obszaru, na którym pracujesz. Aby przyspieszyć indeksowanie i synchronizację, uwzględnij tylko katalogi, które aktywnie modyfikujesz. W tabeli poniżej znajdziesz listę typowych miejsc docelowych i katalogów SDV:

    Obszary rozwoju SDV 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
    SDV Gateway na SDV IVI sdv_ivi_cf-aosp_current-userdebug system/software_defined_vehicle/sdv_gateway, system/software_defined_vehicle/samples/sdv_gateway, packages/services/Car
    Bezpieczeństwo wyświetlania w przypadku SDV Media sdv_media_har_cf-aosp_current-userdebug packages/services/display_safety, device/google/sdv_display_safety
    Wyświetlanie informacji o bezpieczeństwie w samochodowym systemie multimedialnym SDV sdv_ivi_cf_ds-aosp_current-userdebug packages/apps/Car/DriverUI, packages/services/display_safety/service

    Jeśli w procesie płatności używasz trunk_staging manifestu, zastąp -aosp_current-userdebug ciągiem znaków -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 Plik > Synchronizuj projekt.

Wdrażanie pakietów usług SDV

ASfP zawiera wtyczkę SDV, która wdraża pakiet APEX zawierający pakiety usług bezpośrednio na działającym urządzeniu SDV. Wtyczka jest domyślnie wyłączona. Aby z niej korzystać, włącz wtyczkę SDV w sekcji Ustawienia > Wtyczki. Więcej informacji o pakietach 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 skompilować i uruchomić obraz systemu lub użyć obrazu systemu, który zawiera klucz użyty do podpisania APEX-u. Następnie możesz wdrożyć aplikację z ASfP.

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

  1. Uruchom urządzenie SDV za pomocą wtyczki Cuttlefish. Więcej informacji znajdziesz w artykule Uruchamianie urządzeń SDV na platformie Cuttlefish.
  2. Otwórz plik apex/Android.bp pakietu usług i kliknij ikonę Uruchom na marginesie obok bloku apex {.
  3. W menu, które się otworzy, kliknij Uruchom „Wdróż APEX_NAME”. W tym samym menu możesz też utworzyć pakiet APEX bez wdrażania go lub zmienić konfigurację uruchamiania.

Uruchamianie urządzeń SDV na platformie Cuttlefish

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

Aby utworzyć urządzenie SDV:

  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 na potrzeby bezpieczeństwa wyświetlania. Aby utworzyć pojedynczą maszynę wirtualną, wybierz Z lokalnego wyewidencjonowania drzewa źródłowego Androida.

Aby wyświetlić wszystkie ekrany maszyn wirtualnych na jednym ekranie i uzyskać dostęp do dodatkowych opcji urządzenia, użyj okna narzędziowego Cuttlefish. Aby go otworzyć, kliknij ikonę … w panelu bocznym i wybierz Cuttlefish lub wyszukaj Cuttlefish w sekcji Pomoc > Znajdź działanie. Poszczególne wyświetlacze możesz też zobaczyć w sekcji Uruchomione urządzenia. Ponieważ SDV Core działa bez wyświetlacza, do jego sprawdzenia użyj Logcat i Terminala.

Debugowanie i testowanie

Więcej informacji o debugowaniu i testowaniu w ASfP znajdziesz w artykułach Debugowanie kodu platformy i Testowanie kodu platformy. Więcej informacji o konfigurowaniu CodeLLDB do debugowania pakietów usług Rust znajdziesz w sekcji Debugowanie kodu Rust.

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. Poniższe polecenie wyświetla listę procesów dopasowywania i ich identyfikatorów:

adb shell ps -A | grep <bundle_name>

Więcej informacji o przepływach pracy związanych z debugowaniem 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ęzykowy VSIDL (vsidl-lsp). Więcej informacji o konfigurowaniu katalogu na potrzeby serwera językowego znajdziesz w artykule Automatyczne aktualizacje katalogu i integracja z LSP. Jeśli katalog zawiera plik CATALOG_UPDATE, edytor udostępnia te funkcje dla 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, wiadomości, usług, tematów i kanałów, a także nacisnąć 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 Gemini w Android Studio. Więcej informacji o funkcjach ASfP znajdziesz w artykule Poznaj Androida Studio na potrzeby platformy. Aby pomóc Gemini lub innemu asystentowi kodowania AI w przestrzeganiu konwencji SDV, dodaj plik AGENTS.md do katalogu SDV. Więcej informacji o plikach agenta znajdziesz w artykule Dostosowywanie Gemini za pomocą plików AGENTS.md.

Poniższy przykład to punkt początkowy, 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.