Configura un IDE para el desarrollo de SDV

Android Studio for Platform (ASfP) es el entorno de desarrollo integrado (IDE) recomendado para el desarrollo de la plataforma de vehículos definidos por software (SDV) del SO Android Automotive (AAOS). La ASfP admite todos los idiomas que usa la plataforma de SDV de AAOS, incluido Rust para los paquetes de servicios de SDV.

En esta página, solo se trata la configuración específica del SDV. Para obtener más información sobre las funciones y los flujos de trabajo generales de ASfP, consulta Android Studio for Platform.

ASfP solo se ejecuta en Linux de 64 bits con CPUs x86-64. Puedes usarlo en una estación de trabajo local de Linux o en la nube. Para obtener más información sobre la configuración de la nube, consulta Desarrollo en la nube.

Instala ASfP

Para obtener más información sobre cómo descargar e instalar ASfP y verificar los requisitos del sistema, consulta Cómo instalar Android Studio for Platform.

La indexación de una confirmación de compra de la plataforma usa mucha memoria, en especial cuando también ejecutas dispositivos Cuttlefish de varias VMs en la misma máquina. Si ASfP se ejecuta con lentitud, aumenta el tamaño máximo del montón en la configuración de memoria de ASfP para que se ajuste a tu proyecto y a tu máquina, y mantén tu proyecto limitado a los directorios en los que trabajas.

Crea un proyecto de SDV

Inicializa, sincroniza y compila tu SDV de AAOS antes de comenzar. Para obtener más información sobre cómo configurar tu proceso de confirmación de compra, consulta Ubicación del código y Descarga, compila y ejecuta.

Para crear un proyecto de SDV, sigue estos pasos:

  1. Crea un proyecto nuevo en ASfP y selecciona la raíz de tu implementación de SDV de AAOS como la implementación del repositorio. Para obtener más información sobre los pasos del asistente, consulta Cómo crear o importar un proyecto.
  2. Después de que ASfP cree el proyecto, selecciona ASfP > Project > Open Config para abrir el archivo .asfp-project.
  3. Reemplaza el contenido del archivo por el siguiente ejemplo y, luego, establece repo en la ruta de acceso de tu confirmación de compra:

    repo: /path/to/sdv_source
    lunch: sdv_core_cf-aosp_current-userdebug
    directories:
      include:
        -   system/software_defined_vehicle/samples
    other_languages:
      -   rust
    
  4. Actualiza lunch y directories para el área en la que trabajas. Para que la indexación y la sincronización sean rápidas, incluye solo los directorios que modificas de forma activa. En la siguiente tabla, se enumeran los destinos y directorios comunes de la SDV:

    Enfoque del desarrollo de la SDV lunch objetivo Recomendado directories
    Paquetes de servicios de SDV sdv_core_cf-aosp_current-userdebug Tu catálogo de servicios y directorio de paquetes, como system/software_defined_vehicle/samples
    Integración de la plataforma principal del SDV sdv_core_cf-aosp_current-userdebug system/software_defined_vehicle/middleware, system/software_defined_vehicle/automotive_services, device/google/sdv
    SDV Gateway en SDV IVI sdv_ivi_cf-aosp_current-userdebug system/software_defined_vehicle/sdv_gateway, system/software_defined_vehicle/samples/sdv_gateway, packages/services/Car
    Seguridad de la pantalla en los medios de SDV sdv_media_har_cf-aosp_current-userdebug packages/services/display_safety, device/google/sdv_display_safety
    Visualización de la Seguridad en el IVI del SDV sdv_ivi_cf_ds-aosp_current-userdebug packages/apps/Car/DriverUI, packages/services/display_safety/service

    Si tu confirmación de compra usa un manifiesto trunk_staging, reemplaza -aosp_current-userdebug por -trunk_staging-userdebug. Para explorar también el código de la plataforma nativa, agrega cpp a other_languages. Para obtener más información sobre todas las opciones de configuración, consulta Parámetros de configuración.

  5. Para aplicar los cambios, selecciona File > Sync Project.

Implementa paquetes de servicios de SDV

ASfP incluye un complemento de SDV que implementa un APEX que contiene tus paquetes de servicios directamente en un dispositivo SDV en ejecución. El complemento está inhabilitado de forma predeterminada. Para usarlo, habilita el complemento de SDV en Settings > Plugins. Para obtener más información sobre el empaquetado de APEX, consulta Cómo compilar e implementar paquetes de servicios.

La forma en que realices la implementación dependerá de si el APEX ya está en el dispositivo:

  • Si el APEX ya está instalado, puedes implementar los cambios directamente desde ASfP.
  • Si el APEX es nuevo, primero debes volver a compilar y lanzar la imagen del sistema, o bien usar una imagen del sistema que incluya la clave utilizada para firmar el APEX. Después, podrás realizar la implementación desde ASfP.

Para implementar un APEX de paquete de servicio, sigue estos pasos:

  1. Inicia tu dispositivo SDV con el complemento de Cuttlefish. Para obtener más información, consulta Cómo ejecutar dispositivos SDV en Cuttlefish.
  2. Abre el archivo apex/Android.bp de tu paquete de servicios y haz clic en el ícono Ejecutar en el margen junto al bloque apex {.
  3. En el menú que se abre, selecciona Run "Deploy APEX_NAME". También puedes compilar el APEX sin implementarlo o cambiar la configuración de ejecución desde el mismo menú.

Cómo ejecutar dispositivos SDV en Cuttlefish

ASfP incluye un complemento de Cuttlefish que crea y ejecuta dispositivos locales de Cuttlefish. El complemento necesita el orquestador del host de Cuttlefish. Si el orquestador de host no está disponible, ASfP muestra instrucciones para configurarlo.

Para crear un dispositivo SDV, sigue estos pasos:

  1. Selecciona Tools > Administrador de dispositivos, haz clic en + y selecciona Create Cuttlefish Device.
  2. Para crear una configuración de varias VMs, selecciona From canonical configuration y crea o importa una configuración para tu instalación, como SDV Core con SDV IVI, o SDV Media con SDV IVI para Display Safety. Para crear una sola VM, selecciona From local Android source tree checkout.

Para ver todas las pantallas de la VM en una sola pantalla y acceder a opciones adicionales del dispositivo, usa la ventana de herramientas Cuttlefish. Para abrirlo, selecciona el ícono … en el panel lateral y elige Cuttlefish, o bien busca Cuttlefish en Ayuda > Buscar acción. También puedes ver pantallas individuales en Running Devices. Como SDV Core se ejecuta sin una pantalla, usa Logcat y la terminal para inspeccionarlo.

Depuración y pruebas

Para obtener más información sobre la depuración y las pruebas en ASfP, consulta Cómo depurar código de la plataforma y Cómo probar código de la plataforma. Para obtener más información sobre cómo configurar CodeLLDB para depurar paquetes de servicios de Rust, consulta Depuración de Rust.

Cuando adjuntes el depurador a un paquete de servicios, adjúntalo al proceso que lo aloja. Los nombres de los procesos usan el formato <bundle_name>:<instance_name>, como OrchestratorSampleRustServiceBundle:sample-main-no-conditions. El siguiente comando enumera los procesos coincidentes y sus IDs de proceso:

adb shell ps -A | grep <bundle_name>

Para obtener más información sobre los flujos de trabajo de depuración de SDV, como la conexión a varios dispositivos y la visualización de registros, consulta Depura SDV.

Edita archivos VSIDL

ASfP incluye el servidor de lenguaje VSIDL (vsidl-lsp). Para obtener más información sobre cómo configurar tu catálogo para el servidor de lenguaje, consulta Actualizaciones automáticas del catálogo y la integración del LSP. Cuando tu catálogo incluye un archivo CATALOG_UPDATE, el editor proporciona las siguientes funciones para los archivos .vsidl:

  • Validación en vivo: El editor destaca las palabras clave de VSIDL y muestra errores de sintaxis, tipos no resueltos y errores de validación de VSIDLC en la ventana Problems. Para obtener más información sobre las reglas de validación y sus códigos de error, consulta la especificación del lenguaje de VSIDL.
  • Autocompletado y documentación: Puedes presionar Ctrl + barra espaciadora para obtener sugerencias de palabras clave, mensajes, servicios, temas y canales, y presionar Ctrl + Q para ver los comentarios de la documentación.
  • Navegación y formato: Puedes presionar Ctrl + B para ir a las definiciones de .vsidl o .proto, Alt + Mayúsculas + F7 para buscar referencias, Ctrl + F12 para ver la estructura del archivo y Ctrl + Alt + L para darle formato al archivo.

Se agregó contexto de SDV para los asistentes de IA

ASfP incluye Gemini en Android Studio. Para obtener más información sobre las funciones de ASfP, consulta Introducción a Android Studio for Platform. Para ayudar a Gemini o a otro asistente de programación con IA a seguir las convenciones de SDV, agrega un archivo AGENTS.md a la raíz de tu catálogo de SDV. Para obtener más información sobre los archivos de agentes, consulta Cómo personalizar Gemini con archivos AGENTS.md.

El siguiente ejemplo es un punto de partida que puedes adaptar a tu catálogo:

# 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.