Android Studio for Platform (ASfP) è l'ambiente di sviluppo integrato (IDE) consigliato per lo sviluppo della piattaforma Software-Defined Vehicle (SDV) di Android Automotive OS (AAOS). ASfP supporta tutte le lingue utilizzate dalla piattaforma SDV di AAOS, incluso Rust per i bundle di servizi SDV.
Questa pagina riguarda solo la configurazione specifica per SDV. Per ulteriori informazioni sulle funzionalità e sui flussi di lavoro generali di ASfP, consulta Android Studio for Platform.
ASfP viene eseguito solo su Linux a 64 bit con CPU x86-64. Puoi utilizzarlo su una workstation Linux locale o nel cloud. Per saperne di più sulla configurazione del cloud, consulta Sviluppo nel cloud.
Installare ASfP
Per ulteriori informazioni sul download e l'installazione di ASfP e sulla verifica dei requisiti di sistema, vedi Installare Android Studio for Platform.
L'indicizzazione di un checkout della piattaforma utilizza molta memoria, soprattutto quando esegui anche dispositivi Cuttlefish multi-VM sulla stessa macchina. Se ASfP funziona lentamente, aumenta le dimensioni massime dell'heap nelle impostazioni di memoria di ASfP in base al progetto e alla macchina e mantieni il progetto limitato alle directory su cui lavori.
Crea un progetto SDV
Inizializza, sincronizza e crea il checkout SDV di AAOS prima di iniziare. Per ulteriori informazioni sulla configurazione del pagamento, consulta Posizione del codice e Download, build ed esecuzione.
Per creare un progetto SDV:
- Crea un nuovo progetto in ASfP e seleziona la radice del checkout SDV AAOS come checkout del repository. Per ulteriori informazioni sui passaggi della procedura guidata, consulta Creare o importare un progetto.
- Dopo che ASfP ha creato il progetto, seleziona ASfP > Project > Open Config per aprire il file
.asfp-project. Sostituisci i contenuti del file con il seguente esempio, quindi imposta
reposul percorso del tuo checkout:repo: /path/to/sdv_source lunch: sdv_core_cf-aosp_current-userdebug directories: include: - system/software_defined_vehicle/samples other_languages: - rustAggiorna
lunchedirectoriesper l'area in cui lavori. Per mantenere l'indicizzazione e la sincronizzazione veloci, includi solo le directory che modifichi attivamente. La tabella seguente elenca le directory e i target SDV comuni:Focus sullo sviluppo di SDV lunchtargetConsigliato directoriesPacchetti di servizi SDV sdv_core_cf-aosp_current-userdebugIl tuo catalogo di servizi e la directory dei bundle, ad esempio system/software_defined_vehicle/samplesIntegrazione della piattaforma SDV Core sdv_core_cf-aosp_current-userdebugsystem/software_defined_vehicle/middleware,system/software_defined_vehicle/automotive_servicesedevice/google/sdvSDV Gateway su SDV IVI sdv_ivi_cf-aosp_current-userdebugsystem/software_defined_vehicle/sdv_gateway,system/software_defined_vehicle/samples/sdv_gatewayepackages/services/CarDisplay Safety on SDV Media sdv_media_har_cf-aosp_current-userdebugpackages/services/display_safety,device/google/sdv_display_safetyDisplay Safety on SDV IVI sdv_ivi_cf_ds-aosp_current-userdebugpackages/apps/Car/DriverUI,packages/services/display_safety/serviceSe la procedura di acquisto utilizza un manifest
trunk_staging, sostituisci-aosp_current-userdebugcon-trunk_staging-userdebug. Per sfogliare anche il codice della piattaforma nativa, aggiungicppaother_languages. Per saperne di più su tutte le opzioni di configurazione, consulta Parametri di configurazione.Per applicare le modifiche, seleziona File > Sincronizza progetto.
Esegui il deployment dei bundle di servizi SDV
ASfP include un plug-in SDV che esegue il deployment di un APEX contenente i bundle di servizi direttamente su un dispositivo SDV in esecuzione. Il plug-in è disattivato per impostazione predefinita. Per utilizzarlo, attiva il plug-in SDV in Impostazioni > Plug-in. Per saperne di più sulla pacchettizzazione APEX, consulta Creare e distribuire bundle di servizi.
La modalità di deployment dipende dal fatto che l'APEX sia già presente sul dispositivo:
- Se l'APEX è già installato, puoi implementare le modifiche direttamente da ASfP.
- Se l'APEX è nuovo, devi prima ricompilare e riavviare l'immagine di sistema o utilizzare un'immagine di sistema che includa la chiave utilizzata per firmare l'APEX. Dopodiché, puoi eseguire il deployment da ASfP.
Per eseguire il deployment di un APEX del service bundle:
- Avvia il dispositivo SDV con il plug-in Cuttlefish. Per ulteriori informazioni, vedi Eseguire dispositivi SDV su Cuttlefish.
- Apri il file
apex/Android.bpdel bundle di servizi e fai clic sull'icona Esegui nel margine accanto al bloccoapex {. - Nel menu che si apre, seleziona Esegui "Deploy APEX_NAME". Puoi anche creare l'APEX senza eseguirne il deployment o modificare la configurazione di esecuzione dallo stesso menu.
Eseguire dispositivi SDV su Cuttlefish
ASfP include un plug-in Cuttlefish che crea ed esegue dispositivi Cuttlefish locali. Il plug-in richiede l'orchestratore host Cuttlefish. Se l'orchestratore host non è disponibile, ASfP mostra le istruzioni per configurarlo.
Per creare un dispositivo SDV:
- Seleziona Strumenti > Gestione dispositivi, fai clic su + e seleziona Crea dispositivo Cuttlefish.
- Per creare una configurazione multi-VM, seleziona Dalla configurazione canonica e crea o importa una configurazione per la tua configurazione, ad esempio SDV Core con SDV IVI o SDV Media con SDV IVI per la sicurezza del display. Per creare una singola VM, seleziona Da estrazione dell'albero delle origini Android locale.
Per visualizzare tutti i display delle VM su un'unica schermata e accedere ad altre opzioni del dispositivo, utilizza la finestra degli strumenti Cuttlefish. Per aprirlo, seleziona l'icona … nel riquadro laterale e seleziona Cuttlefish oppure cerca Cuttlefish in Guida > Trova azione. Puoi anche visualizzare i singoli display in Dispositivi in esecuzione. Poiché SDV Core viene eseguito senza display, utilizza Logcat e il terminale per ispezionarlo.
Debug e test
Per ulteriori informazioni sul debug e sui test in ASfP, vedi Eseguire il debug del codice della piattaforma e Testare il codice della piattaforma. Per saperne di più sulla configurazione di CodeLLDB per il debug dei bundle di servizi Rust, consulta Debug di Rust.
Quando colleghi il debugger a un bundle di servizi, collegalo al processo che lo ospita. I nomi dei processi utilizzano il formato <bundle_name>:<instance_name>, ad esempio
OrchestratorSampleRustServiceBundle:sample-main-no-conditions. Il comando seguente elenca i processi di corrispondenza e i relativi ID processo:
adb shell ps -A | grep <bundle_name>
Per ulteriori informazioni sui flussi di lavoro di debug SDV, ad esempio la connessione a più dispositivi e la visualizzazione dei log, consulta Eseguire il debug di SDV.
Modificare i file VSIDL
ASfP include il server di linguaggio VSIDL (vsidl-lsp). Per ulteriori informazioni
su come configurare il catalogo per il server di linguaggio, consulta
Aggiornamenti automatici del catalogo e integrazione LSP. Quando il catalogo include un file CATALOG_UPDATE, l'editor fornisce le seguenti funzionalità per i file .vsidl:
- Convalida in tempo reale: l'editor evidenzia le parole chiave VSIDL e mostra gli errori di sintassi, i tipi non risolti e gli errori di convalida VSIDLC nella finestra Problemi. Per ulteriori informazioni sulle regole di convalida e sui relativi codici di errore, consulta le specifiche del linguaggio VSIDL.
- Completamento automatico e documentazione: puoi premere Ctrl+Spazio per visualizzare suggerimenti per parole chiave, messaggi, servizi, argomenti e canali e premere Ctrl+Q per visualizzare i commenti della documentazione.
- Navigazione e formattazione: puoi premere Ctrl+B per andare alle definizioni di
.vsidlo.proto, Alt+Maiusc+F7 per trovare i riferimenti, Ctrl+F12 per visualizzare la struttura del file e Ctrl+Alt+L per formattare il file.
Aggiungere il contesto SDV per gli assistenti AI
ASfP include Gemini in Android Studio. Per ulteriori informazioni sulle funzionalità di ASfP, consulta Scopri Android Studio for Platform. Per aiutare Gemini o un altro
assistente di programmazione AI a seguire le convenzioni SDV, aggiungi un file AGENTS.md alla radice
del tuo catalogo SDV. Per saperne di più sui file degli agenti, consulta
Personalizzare Gemini utilizzando i file AGENTS.md.
L'esempio seguente è un punto di partenza che puoi adattare al tuo catalogo:
# 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.