Configurare un IDE per lo sviluppo di SDV

Android Studio for Platform (ASfP) è l'ambiente di sviluppo integrato (IDE) consigliato per lo sviluppo della piattaforma SDV (Software-Defined Vehicle) di Android Automotive OS (AAOS). ASfP supporta tutte le lingue utilizzate dalla piattaforma SDV AAOS, incluso Rust per i bundle di servizi SDV.

Questa pagina illustra solo la configurazione specifica per gli 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 cloud.

Installa ASfP

Per impostazione predefinita, ASfP ha una dimensione massima dell'heap di 30 GB. L'indicizzazione di un checkout della piattaforma utilizza molta memoria, soprattutto quando esegui anche dispositivi Cuttlefish multi-VM sulla stessa macchina. Mantieni il progetto limitato alle directory su cui lavori e, se necessario, regola la dimensione massima dell'heap nelle impostazioni di memoria di ASfP.

ASfP supporta gli aggiornamenti automatici nell'IDE. Per saperne di più, consulta Aggiorna Android Studio per la piattaforma. Per saperne di più sul download e sull'installazione di ASfP e sul controllo dei requisiti di sistema, consulta Installa Android Studio for Platform.

Crea un progetto SDV

Prima di iniziare, inizializza, sincronizza e crea il checkout dell'SDV AAOS. Per ulteriori informazioni sulla configurazione del pagamento, consulta Posizione del codice e Scarica, crea ed esegui.

Per creare un progetto SDV, segui questi passaggi:

  1. Crea un nuovo progetto in ASfP e seleziona la directory principale del checkout dell'SDV AAOS come checkout del repository. Per saperne di più sui passaggi della procedura guidata, consulta Crea o importa un progetto.
  2. Dopo che ASfP ha creato il progetto, seleziona ASfP > Project > Open Config per aprire il file .asfp-project.
  3. Sostituisci i contenuti del file con il seguente esempio, quindi imposta repo sul 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:
      -   rust
    
  4. Aggiorna lunch e directories per l'area su cui lavori. Per mantenere l'indicizzazione e la sincronizzazione rapide, includi solo le directory che modifichi attivamente. La tabella seguente elenca i target e le directory SDV comuni:

    Focus sullo sviluppo di SDV lunch target directories consigliato
    Pacchetti di servizi SDV sdv_core_cf-aosp_current-userdebug Il tuo catalogo dei servizi e la directory dei bundle, ad esempio system/software_defined_vehicle/samples
    Integrazione della piattaforma SDV Core sdv_core_cf-aosp_current-userdebug system/software_defined_vehicle/middleware, system/software_defined_vehicle/automotive_services e device/google/sdv
    SDV Gateway su SDV IVI sdv_ivi_cf-aosp_current-userdebug system/software_defined_vehicle/sdv_gateway, system/software_defined_vehicle/samples/sdv_gateway e packages/services/Car
    Display Safety on SDV Media sdv_media_har_cf-aosp_current-userdebug packages/services/display_safety, device/google/sdv_display_safety
    Display Safety on SDV IVI sdv_ivi_cf_ds-aosp_current-userdebug packages/apps/Car/DriverUI, packages/services/display_safety/service

    Se il tuo checkout utilizza un manifest trunk_staging, sostituisci -aosp_current-userdebug con -trunk_staging-userdebug. Per sfogliare anche il codice della piattaforma nativa, aggiungi cpp a other_languages. Per saperne di più su tutte le opzioni di configurazione, consulta Parametri di configurazione.

  5. Per applicare le modifiche, seleziona ASfP > Sincronizza > Sincronizza progetto. Per saperne di più sulle modalità di sincronizzazione (Sincronizzazione completa, Sincronizzazione parziale e Sincronizzazione senza build) e sull'esportazione o l'importazione di modelli .asfp-project condivisibili per il tuo team, consulta Modalità di sincronizzazione e finestra degli strumenti Soong e Modelli di progetto condivisibili (esportazione e importazione).

Esegui il deployment dei bundle di servizi SDV

ASfP include un plug-in SDV che esegue il deployment di un APEX contenente i tuoi 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 Crea ed esegui il deployment di bundle di servizi.

La modalità di deployment dipende dal fatto che l'APEX sia già presente o meno sul dispositivo:

  • Se APEX è già installato, puoi eseguire il deployment delle modifiche direttamente da ASfP.
  • Se l'APEX è nuovo, devi prima ricreare 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 bundle di servizi, segui questi passaggi:

  1. Avvia il dispositivo SDV con il plug-in Cuttlefish. Per saperne di più, consulta Esegui i dispositivi SDV su Cuttlefish.
  2. Apri il file apex/Android.bp del tuo bundle di servizi e fai clic sull'icona Esegui nel margine accanto al blocco apex {.
  3. Nel menu che si apre, seleziona Esegui "Esegui il deployment di APEX_NAME". Puoi anche creare l'APEX senza eseguirne il deployment o modificare la configurazione di esecuzione dallo stesso menu.

Esegui i dispositivi SDV su Cuttlefish

ASfP include un plug-in Cuttlefish che crea ed esegue dispositivi Cuttlefish locali. Il plug-in richiede l'agente di orchestrazione host Cuttlefish. Se l'agente di orchestrazione host non è disponibile, ASfP mostra le istruzioni per configurarlo.

Per creare un dispositivo SDV, segui questi passaggi:

  1. Seleziona Strumenti > Gestione dispositivi, fai clic su + e seleziona Crea dispositivo Cuttlefish.
  2. Per creare una configurazione multi-VM, seleziona Da 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 Dal checkout dell'albero di origine 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

ASfP include un debugger LLDB integrato per il codice C++ e Rust. Per saperne di più sul debug e sui test in ASfP, consulta Esegui il debug del codice della piattaforma, Esegui il debug del codice Rust, Testa il codice della piattaforma con atest ed Esegui il debug dei target cc_test e rust_test in LLDB.

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 seguente comando elenca i processi corrispondenti e i relativi ID di processo:

adb shell ps -A | grep <bundle_name>

Per saperne di più sui workflow di debug degli SDV, ad esempio sulla connessione a più dispositivi e sulla visualizzazione dei log, consulta Esegui il debug degli SDV.

Modifica i file VSIDL

ASfP include il server di linguaggio VSIDL (vsidl-lsp). Per saperne di più 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 la specifica 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 .vsidl o .proto, Alt+Maiusc+F7 per trovare i riferimenti, Ctrl+F12 per visualizzare la struttura del file e Ctrl+Alt+L per formattare il file.

Aggiungi il contesto SDV per gli assistenti AI

ASfP include AI in Android Studio e un agente integrato con strumenti di build Soong e atest. Per saperne di più sulle funzionalità di AI di ASfP, consulta Scopri Android Studio for Platform. Per aiutare l'assistente AI a seguire le convenzioni SDV, aggiungi un file AGENTS.md alla directory principale del tuo catalogo VSIDL. Per saperne di più sui file degli agenti, consulta Personalizza 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.