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:
- 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.
- Gdy ASfP utworzy projekt, kliknij ASfP > Projekt > Otwórz konfigurację, aby otworzyć plik
.asfp-project. Zastąp zawartość pliku tym przykładem, a następnie ustaw
repona ś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: - rustZaktualizuj wartości
lunchidirectoriesdla 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 lunchcelZalecane: directoriesPakiety usług SDV sdv_core_cf-aosp_current-userdebugKatalog usług i pakietów, np. system/software_defined_vehicle/samplesIntegracja z platformą SDV Core sdv_core_cf-aosp_current-userdebugsystem/software_defined_vehicle/middleware,system/software_defined_vehicle/automotive_services,device/google/sdvSDV Gateway na SDV IVI sdv_ivi_cf-aosp_current-userdebugsystem/software_defined_vehicle/sdv_gateway,system/software_defined_vehicle/samples/sdv_gateway,packages/services/CarBezpieczeństwo wyświetlania w przypadku SDV Media sdv_media_har_cf-aosp_current-userdebugpackages/services/display_safety,device/google/sdv_display_safetyWyświetlanie informacji o bezpieczeństwie w samochodowym systemie multimedialnym SDV sdv_ivi_cf_ds-aosp_current-userdebugpackages/apps/Car/DriverUI,packages/services/display_safety/serviceJeśli w procesie płatności używasz
trunk_stagingmanifestu, zastąp-aosp_current-userdebugciągiem znaków-trunk_staging-userdebug. Aby przeglądać też kod platformy natywnej, dodajcppdoother_languages. Więcej informacji o wszystkich opcjach konfiguracji znajdziesz w artykule Parametry konfiguracji.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:
- Uruchom urządzenie SDV za pomocą wtyczki Cuttlefish. Więcej informacji znajdziesz w artykule Uruchamianie urządzeń SDV na platformie Cuttlefish.
- Otwórz plik
apex/Android.bppakietu usług i kliknij ikonę Uruchom na marginesie obok blokuapex {. - 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:
- Wybierz Narzędzia > Menedżer urządzeń, kliknij + i wybierz Utwórz urządzenie Cuttlefish.
- 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
.vsidllub.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.