Configurer un IDE pour le développement SDV

Android Studio for Platform (ASfP) est l'environnement de développement intégré (IDE) recommandé pour le développement de la plate-forme de véhicule défini par logiciel (SDV) Android Automotive OS (AAOS). ASfP est compatible avec toutes les langues utilisées par la plate-forme AAOS SDV, y compris Rust pour les bundles de services SDV.

Cette page ne traite que de la configuration spécifique à la validation des données structurées. Pour en savoir plus sur les fonctionnalités et les workflows généraux d'ASfP, consultez Android Studio for Platform.

ASfP ne fonctionne que sur Linux 64 bits avec des processeurs x86-64. Vous pouvez l'utiliser sur une station de travail Linux locale ou dans le cloud. Pour en savoir plus sur la configuration du cloud, consultez Développement dans le cloud.

Installer ASfP

Pour en savoir plus sur le téléchargement et l'installation d'ASfP, et pour vérifier la configuration système requise, consultez Installer Android Studio for Platform.

L'indexation d'un paiement sur une plate-forme utilise beaucoup de mémoire, en particulier lorsque vous exécutez également des appareils Cuttlefish multi-VM sur la même machine. Si ASfP s'exécute lentement, augmentez la taille maximale du tas de mémoire dans les paramètres de mémoire ASfP pour l'adapter à votre projet et à votre machine, et limitez la portée de votre projet aux répertoires sur lesquels vous travaillez.

Créer un projet SDV

Avant de commencer, initialisez, synchronisez et compilez votre paiement AAOS SDV. Pour en savoir plus sur la configuration de votre paiement, consultez Emplacement du code et Télécharger, compiler et exécuter.

Pour créer un projet SDV, procédez comme suit :

  1. Créez un projet dans ASfP et sélectionnez la racine de votre extraction AAOS SDV comme extraction du dépôt. Pour en savoir plus sur les étapes de l'assistant, consultez Créer ou importer un projet.
  2. Une fois le projet créé par ASfP, sélectionnez ASfP > Project > Open Config (ASfP > Projet > Ouvrir la configuration) pour ouvrir le fichier .asfp-project.
  3. Remplacez le contenu du fichier par l'exemple suivant, puis définissez repo sur le chemin d'accès à votre extrait de code :

    repo: /path/to/sdv_source
    lunch: sdv_core_cf-aosp_current-userdebug
    directories:
      include:
        -   system/software_defined_vehicle/samples
    other_languages:
      -   rust
    
  4. Mettez à jour lunch et directories pour la zone sur laquelle vous travaillez. Pour que l'indexation et la synchronisation soient rapides, n'incluez que les répertoires que vous modifiez activement. Le tableau suivant liste les répertoires et cibles SDV courants :

    Priorités de développement de SDV lunch cible Recommandés directories
    Regroupements de services SDV sdv_core_cf-aosp_current-userdebug Votre catalogue de services et votre répertoire de packs, par exemple system/software_defined_vehicle/samples
    Intégration de la plate-forme SDV Core sdv_core_cf-aosp_current-userdebug system/software_defined_vehicle/middleware, system/software_defined_vehicle/automotive_services, device/google/sdv
    Passerelle SDV sur SDV IVI sdv_ivi_cf-aosp_current-userdebug system/software_defined_vehicle/sdv_gateway, system/software_defined_vehicle/samples/sdv_gateway, packages/services/Car
    Afficher la sécurité sur les supports SDV sdv_media_har_cf-aosp_current-userdebug packages/services/display_safety, device/google/sdv_display_safety
    Afficher la sécurité sur l'IVI SDV sdv_ivi_cf_ds-aosp_current-userdebug packages/apps/Car/DriverUI, packages/services/display_safety/service

    Si votre processus de règlement utilise un fichier manifeste trunk_staging, remplacez -aosp_current-userdebug par -trunk_staging-userdebug. Pour parcourir également le code de la plate-forme native, ajoutez cpp à other_languages. Pour en savoir plus sur toutes les options de configuration, consultez Paramètres de configuration.

  5. Pour appliquer vos modifications, sélectionnez File > Sync Project (Fichier > Synchroniser le projet).

Déployer des bundles de services SDV

ASfP inclut un plug-in SDV qui déploie un APEX contenant vos bundles de services directement sur un appareil SDV en cours d'exécution. Le plug-in est désactivé par défaut. Pour l'utiliser, activez le plug-in SDV dans Settings > Plugins (Paramètres > Plug-ins). Pour en savoir plus sur le packaging APEX, consultez Créer et déployer des bundles de services.

La façon dont vous déployez l'APEX dépend de si elle est déjà sur l'appareil :

  • Si APEX est déjà installé, vous pouvez déployer vos modifications directement depuis ASfP.
  • Si l'APEX est nouveau, vous devez d'abord reconstruire et relancer l'image système, ou utiliser une image système qui inclut la clé utilisée pour signer l'APEX. Vous pourrez ensuite déployer à partir d'ASfP.

Pour déployer un bundle de services APEX, procédez comme suit :

  1. Démarrez votre appareil SDV avec le plug-in Cuttlefish. Pour en savoir plus, consultez Exécuter des appareils SDV sur Cuttlefish.
  2. Ouvrez le fichier apex/Android.bp de votre bundle de services, puis cliquez sur l'icône Exécuter dans la gouttière à côté du bloc apex {.
  3. Dans le menu qui s'ouvre, sélectionnez Exécuter "Déployer APEX_NAME". Vous pouvez également créer l'APEX sans le déployer ni modifier la configuration d'exécution à partir du même menu.

Exécuter des appareils SDV sur Cuttlefish

ASfP inclut un plug-in Cuttlefish qui crée et exécute des appareils Cuttlefish locaux. Le plug-in a besoin de l'orchestrateur hôte Cuttlefish. Si l'orchestrateur hôte n'est pas disponible, ASfP affiche des instructions pour le configurer.

Pour créer un appareil SDV, procédez comme suit :

  1. Sélectionnez Tools > Device Manager (Outils > Gestionnaire d'appareils), cliquez sur +, puis sélectionnez Create Cuttlefish Device (Créer un appareil Cuttlefish).
  2. Pour créer une configuration multi-VM, sélectionnez À partir d'une configuration canonique, puis créez ou importez une configuration pour votre configuration, telle que SDV Core avec SDV IVI ou SDV Media avec SDV IVI pour la sécurité de l'affichage. Pour créer une seule VM, sélectionnez plutôt À partir de l'extraction locale de l'arborescence source Android.

Pour afficher tous les écrans de VM sur un seul écran et accéder à d'autres options d'appareil, utilisez la fenêtre d'outil Cuttlefish. Pour l'ouvrir, sélectionnez l'icône ... dans le panneau latéral, puis Cuttlefish. Vous pouvez également rechercher Cuttlefish dans Aide > Rechercher une action. Vous pouvez également afficher les écrans individuels dans Appareils en cours d'exécution. Étant donné que SDV Core s'exécute sans écran, utilisez Logcat et le Terminal pour l'inspecter.

Déboguer et tester

Pour en savoir plus sur le débogage et les tests dans ASfP, consultez Déboguer le code de la plate-forme et Tester le code de la plate-forme. Pour en savoir plus sur la configuration de CodeLLDB pour déboguer les bundles de services Rust, consultez Débogage Rust.

Lorsque vous associez le débogueur à un bundle de services, associez-le au processus qui l'héberge. Les noms de processus utilisent le format <bundle_name>:<instance_name>, par exemple OrchestratorSampleRustServiceBundle:sample-main-no-conditions. La commande suivante liste les processus correspondants et leurs ID de processus :

adb shell ps -A | grep <bundle_name>

Pour en savoir plus sur les workflows de débogage SDV, comme la connexion à plusieurs appareils et l'affichage des journaux, consultez Déboguer SDV.

Modifier des fichiers VSIDL

ASfP inclut le serveur de langage VSIDL (vsidl-lsp). Pour savoir comment configurer votre catalogue pour le serveur de langage, consultez Mises à jour automatiques du catalogue et intégration LSP. Lorsque votre catalogue inclut un fichier CATALOG_UPDATE, l'éditeur fournit les fonctionnalités suivantes pour les fichiers .vsidl :

  • Validation en direct : l'éditeur met en surbrillance les mots clés VSIDL et affiche les erreurs de syntaxe, les types non résolus et les erreurs de validation VSIDLC dans la fenêtre Problèmes. Pour en savoir plus sur les règles de validation et leurs codes d'erreur, consultez les spécifications du langage VSIDL.
  • Saisie semi-automatique et documentation : vous pouvez appuyer sur Ctrl+Espace pour obtenir des suggestions de mots clés, de messages, de services, de thèmes et de chaînes, et sur Ctrl+Q pour afficher les commentaires de la documentation.
  • Navigation et mise en forme : vous pouvez appuyer sur Ctrl+B pour accéder aux définitions .vsidl ou .proto, sur Alt+Maj+F7 pour trouver les références, sur Ctrl+F12 pour afficher la structure du fichier et sur Ctrl+Alt+L pour mettre en forme le fichier.

Ajouter le contexte SDV pour les assistants IA

ASfP inclut Gemini dans Android Studio. Pour en savoir plus sur les fonctionnalités d'ASfP, consultez Découvrir Android Studio for Platform. Pour aider Gemini ou un autre assistant de codage IA à suivre les conventions SDV, ajoutez un fichier AGENTS.md à la racine de votre catalogue SDV. Pour en savoir plus sur les fichiers d'agent, consultez Personnaliser Gemini à l'aide des fichiers AGENTS.md.

L'exemple suivant est un point de départ que vous pouvez adapter à votre catalogue :

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