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). ASfP admite todos los lenguajes que usa la plataforma de SDV de AAOS, incluido Rust para los paquetes de servicios de SDV.
En esta página, solo se explica la configuración específica de 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 usarla 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
ASfP tiene un tamaño de montón máximo predeterminado de 30 GB. La indexación de una confirmación de la plataforma usa mucha memoria, en especial cuando también ejecutas dispositivos Cuttlefish con varias VMs en la misma máquina. Mantén el proyecto limitado a los directorios en los que trabajas y, si es necesario, ajusta el tamaño máximo del montón en la configuración de memoria de ASfP.
ASfP admite actualizaciones automáticas en el IDE. Para obtener más información, consulta Cómo actualizar Android Studio para la plataforma. Para obtener más información sobre cómo descargar e instalar ASfP y verificar los requisitos del sistema, consulta Instala Android Studio for Platform.
Cómo crear un proyecto de SDV
Inicializa, sincroniza y compila tu confirmación de compra de SDV de AAOS antes de comenzar. Para obtener más información sobre cómo configurar la confirmación de la compra, consulta Ubicación del código y Descarga, compila y ejecuta.
Para crear un proyecto de SDV, sigue estos pasos:
- 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.
- Después de que ASfP cree el proyecto, selecciona ASfP > Project > Open Config para abrir el archivo
.asfp-project. Reemplaza el contenido del archivo por el siguiente ejemplo y, luego, establece
repoen la ruta de acceso de tu confirmación de la compra:repo: /path/to/sdv_source lunch: sdv_core_cf-aosp_current-userdebug directories: include: - system/software_defined_vehicle/samples other_languages: - rustActualiza
lunchydirectoriespara 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 SDV:Enfoque de desarrollo de SDV lunchobjetivoRecomendación: directoriesPaquetes de servicios de SDV sdv_core_cf-aosp_current-userdebugTu catálogo de servicios y directorio de paquetes, como system/software_defined_vehicle/samplesIntegración de la plataforma principal de SDV sdv_core_cf-aosp_current-userdebugsystem/software_defined_vehicle/middleware,system/software_defined_vehicle/automotive_services,device/google/sdvPuerta de enlace de SDV en IVI de SDV sdv_ivi_cf-aosp_current-userdebugsystem/software_defined_vehicle/sdv_gateway,system/software_defined_vehicle/samples/sdv_gateway,packages/services/CarDisplay Safety on SDV Media sdv_media_har_cf-aosp_current-userdebugpackages/services/display_safety,device/google/sdv_display_safetySeguridad de la pantalla en el IVI de SDV sdv_ivi_cf_ds-aosp_current-userdebugpackages/apps/Car/DriverUI,packages/services/display_safety/serviceSi tu confirmación de la compra usa un manifiesto
trunk_staging, reemplaza-aosp_current-userdebugpor-trunk_staging-userdebug. Para explorar también el código de la plataforma nativa, agregacppaother_languages. Para obtener más información sobre todas las opciones de configuración, consulta Parámetros de configuración.Para aplicar los cambios, selecciona ASfP > Sync > Sync Project. Para obtener más información sobre los modos de sincronización (sincronización completa, sincronización parcial y sincronización sin compilación) y la exportación o importación de plantillas de
.asfp-projectque se pueden compartir para tu equipo, consulta Modos de sincronización y ventana de herramientas de Soong y Plantillas de proyectos que se pueden compartir (exportación e importación).
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 Compila e implementa 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 reiniciar la imagen del sistema, o bien usar una imagen del sistema que incluya la clave que se usó para firmar el APEX. Luego, puedes implementar desde ASfP.
Para implementar un APEX de paquete de servicios, sigue estos pasos:
- Inicia tu dispositivo SDV con el complemento de Cuttlefish. Para obtener más información, consulta Cómo ejecutar dispositivos SDV en Cuttlefish.
- Abre el archivo
apex/Android.bpde tu paquete de servicios y haz clic en el ícono Ejecutar en el margen junto al bloqueapex {. - 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 organizador de hosts de Cuttlefish. Si el organizador de hosts no está disponible, ASfP muestra instrucciones para configurarlo.
Para crear un dispositivo SDV, sigue estos pasos:
- Selecciona Tools > Administrador de dispositivos, haz clic en + y selecciona Create Cuttlefish Device.
- Para crear una configuración de varias VMs, selecciona From canonical configuration y crea o importa una configuración para tu configuració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 VM en una sola pantalla y acceder a opciones adicionales del dispositivo, usa la ventana de herramientas de Cuttlefish. Para abrirlo, selecciona el ícono ... en el panel lateral y elige Cuttlefish, o busca Cuttlefish en Help > Find Action. También puedes ver pantallas individuales en Running Devices. Como SDV Core se ejecuta sin una pantalla, usa Logcat y la Terminal para inspeccionarlo.
Depura y prueba
ASfP incluye un depurador LLDB integrado para el código de C++ y Rust. Para obtener más información sobre la depuración y las pruebas en ASfP, consulta Cómo depurar código de la plataforma, Cómo depurar código de Rust, Cómo probar código de la plataforma con atest y Cómo depurar destinos cc_test y rust_test en LLDB.
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. Con el siguiente comando, se enumeran los procesos que coinciden 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.
Editar 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 de 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 sin resolver 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 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
.vsidlo.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.
Agrega contexto de SDV para los asistentes de IA
ASfP incluye IA en Android Studio y un agente integrado con herramientas de compilación de Soong y
atest. Para obtener más información sobre las funciones potenciadas por IA de ASfP, consulta
Conoce Android Studio for Platform. Para ayudar al asistente de IA a seguir las convenciones de SDV, agrega un archivo AGENTS.md a la raíz de tu catálogo de VSIDL.
Para obtener más información sobre los archivos de agentes, consulta
Personaliza 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.