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) d'Android Automotive OS (AAOS). ASfP est compatible avec tous les langages utilisés par la plate-forme SDV AAOS, y compris Rust pour les bundles de services SDV.
Cette page ne traite que de la configuration spécifique aux SDV. Pour en savoir plus sur les fonctionnalités et les workflows généraux d'ASfP, consultez Android Studio for Platform.
ASfP ne s'exécute que sur Linux 64 bits avec des processeurs x86-64. Vous pouvez l'utiliser sur un poste de travail Linux local ou dans le cloud. Pour en savoir plus sur la configuration du cloud, consultez Développement cloud.
Installer ASfP
Par défaut, ASfP utilise une taille de tas maximale de 30 Go. L'indexation d'un checkout de plate-forme utilise beaucoup de mémoire, en particulier lorsque vous exécutez également des appareils Cuttlefish multi-VM sur la même machine. Limitez la portée de votre projet aux répertoires sur lesquels vous travaillez et ajustez la taille maximale du tas de mémoire dans les paramètres de mémoire d'ASfP si nécessaire.
ASfP est compatible avec les mises à jour automatiques dans l'IDE. Pour en savoir plus, consultez Mettre à jour Android Studio pour la plate-forme. Pour en savoir plus sur le téléchargement et l'installation d'ASfP, ainsi que sur la configuration système requise, consultez Installer Android Studio for Platform.
Créer un projet SDV
Avant de commencer, initialisez, synchronisez et compilez votre checkout AAOS SDV. Pour en savoir plus sur la configuration de votre checkout, consultez Emplacement du code et Télécharger, compiler et exécuter.
Pour créer un projet SDV, procédez comme suit :
- Créez un projet dans ASfP et sélectionnez la racine de votre extraction AAOS SDV comme extraction de dépôt. Pour en savoir plus sur les étapes de l'assistant, consultez Créer ou importer un projet.
- Une fois qu'ASfP a créé le projet, sélectionnez ASfP > Project > Open Config (ASfP > Projet > Ouvrir la configuration) pour ouvrir le fichier
.asfp-project. Remplacez le contenu du fichier par l'exemple suivant, puis définissez
reposur le chemin d'accès de votre paiement :repo: /path/to/sdv_source lunch: sdv_core_cf-aosp_current-userdebug directories: include: - system/software_defined_vehicle/samples other_languages: - rustMettez à jour
lunchetdirectoriespour la zone sur laquelle vous travaillez. Pour que l'indexation et la synchronisation restent rapides, n'incluez que les répertoires que vous modifiez activement. Le tableau suivant liste les cibles et répertoires SDV courants :Objectif de développement SDV lunchcibleRecommandés directoriesLots de services SDV sdv_core_cf-aosp_current-userdebugVotre catalogue de services et votre répertoire de bundles, par exemple system/software_defined_vehicle/samplesIntégration de la plate-forme SDV Core sdv_core_cf-aosp_current-userdebugsystem/software_defined_vehicle/middleware,system/software_defined_vehicle/automotive_services,device/google/sdvPasserelle SDV sur SDV IVI sdv_ivi_cf-aosp_current-userdebugsystem/software_defined_vehicle/sdv_gateway,system/software_defined_vehicle/samples/sdv_gateway,packages/services/CarAfficher la sécurité sur les supports SDV sdv_media_har_cf-aosp_current-userdebugpackages/services/display_safety,device/google/sdv_display_safetyAfficher la sécurité sur l'IVI SDV sdv_ivi_cf_ds-aosp_current-userdebugpackages/apps/Car/DriverUI,packages/services/display_safety/serviceSi votre paiement utilise un fichier manifeste
trunk_staging, remplacez-aosp_current-userdebugpar-trunk_staging-userdebug. Pour parcourir également le code de la plate-forme native, ajoutezcppàother_languages. Pour en savoir plus sur toutes les options de configuration, consultez Paramètres de configuration.Pour appliquer vos modifications, sélectionnez ASfP > Sync > Sync Project (ASfP > Synchroniser > Synchroniser le projet). Pour en savoir plus sur les modes de synchronisation (synchronisation complète, synchronisation partielle et synchronisation sans compilation) et sur l'exportation ou l'importation de modèles
.asfp-projectpartageables pour votre équipe, consultez Modes de synchronisation et fenêtre d'outil Soong et Modèles de projet partageables (exportation et importation).
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.
Le déploiement dépend de la présence ou non de l'APEX sur l'appareil :
- Si l'APEX est déjà installé, vous pouvez déployer vos modifications directement depuis ASfP.
- Si l'APEX est nouveau, vous devez d'abord recompiler et relancer l'image système, ou utiliser une image système incluant la clé utilisée pour signer l'APEX. Vous pourrez ensuite déployer depuis ASfP.
Pour déployer un APEX de bundle de services, procédez comme suit :
- Démarrez votre appareil SDV avec le plug-in Cuttlefish. Pour en savoir plus, consultez Exécuter des appareils SDV sur Cuttlefish.
- Ouvrez le fichier
apex/Android.bpde votre bundle de services, puis cliquez sur l'icône Exécuter dans la marge à côté du blocapex {. - Dans le menu qui s'ouvre, sélectionnez Run 'Deploy APEX_NAME' (Exécuter "Déployer "). Vous pouvez également compiler l'APEX sans le déployer ou 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 nécessite l'orchestrateur d'hôte Cuttlefish. Si l'outil d'orchestration hôte n'est pas disponible, ASfP affiche des instructions pour le configurer.
Pour créer un appareil SDV, procédez comme suit :
- Sélectionnez Tools > Device Manager (Outils > Gestionnaire d'appareils), cliquez sur +, puis sélectionnez Create Cuttlefish Device (Créer un appareil Cuttlefish).
- Pour créer une configuration multi-VM, sélectionnez À partir d'une configuration canonique, puis créez ou importez une configuration pour votre configuration, par exemple 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 de l'arborescence source Android locale.
Pour afficher tous les écrans de VM sur un seul écran et accéder à des options d'appareil supplémentaires, utilisez la fenêtre d'outil Cuttlefish. Pour l'ouvrir, sélectionnez l'icône ... dans le panneau latéral, puis sélectionnez Cuttlefish, ou recherchez Cuttlefish dans Aide > Rechercher une action. Vous pouvez également afficher des écrans individuels dans Running Devices (Appareils en cours d'exécution). Comme SDV Core s'exécute sans écran, utilisez Logcat et le terminal pour l'inspecter.
Déboguer et tester
ASfP inclut un débogueur LLDB intégré pour le code C++ et Rust. Pour en savoir plus sur le débogage et les tests dans ASfP, consultez Déboguer le code de la plate-forme, Déboguer le code Rust, Tester le code de la plate-forme avec atest et Déboguer les cibles cc_test et rust_test sous LLDB.
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 un SDV.
Modifier des fichiers VSIDL
ASfP inclut le serveur de langage VSIDL (vsidl-lsp). Pour en savoir plus sur la configuration de votre catalogue pour le serveur de langage, consultez Mises à jour automatiques du catalogue et intégration de 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 la spécification 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 sujets et de canaux, 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
.vsidlou.proto, sur Alt+Maj+F7 pour rechercher des 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 l'IA dans Android Studio et un agent intégré avec les outils de compilation Soong et atest. Pour en savoir plus sur les fonctionnalités d'IA d'ASfP, consultez Découvrir Android Studio for Platform. Pour aider l'assistant IA à suivre les conventions SDV, ajoutez un fichier AGENTS.md à la racine de votre catalogue VSIDL.
Pour en savoir plus sur les fichiers d'agent, consultez Personnaliser Gemini à l'aide de 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.