Android Studio for Platform (ASfP) ist die empfohlene integrierte Entwicklungsumgebung (IDE) für die Entwicklung von Software-Defined Vehicles (SDVs) auf der Android Automotive OS-Plattform (AAOS). ASfP unterstützt alle Sprachen, die die AAOS-SDV-Plattform verwendet, einschließlich Rust für SDV-Dienstpakete.
Auf dieser Seite wird nur die SDV-spezifische Einrichtung beschrieben. Weitere Informationen zu allgemeinen ASfP-Funktionen und ‑Workflows finden Sie unter Android Studio for Platform.
ASfP kann nur unter 64-Bit-Linux mit x86-64-CPUs ausgeführt werden. Sie können es auf einer lokalen Linux-Workstation oder in der Cloud verwenden. Weitere Informationen zur Cloud-Einrichtung finden Sie unter Cloud-Entwicklung.
ASfP installieren
ASfP verwendet standardmäßig eine maximale Heap-Größe von 30 GB. Das Indexieren eines Plattform-Checkouts verbraucht viel Arbeitsspeicher, insbesondere wenn Sie auch Cuttlefish-Geräte mit mehreren VMs auf demselben Computer ausführen. Beschränken Sie Ihr Projekt auf die Verzeichnisse, an denen Sie arbeiten, und passen Sie bei Bedarf die maximale Heap-Größe in den ASfP-Speichereinstellungen an.
ASfP unterstützt automatische Updates in der IDE. Weitere Informationen finden Sie unter Android Studio für die Plattform aktualisieren. Weitere Informationen zum Herunterladen und Installieren von ASfP und zum Prüfen der Systemanforderungen finden Sie unter Android Studio for Platform installieren.
SDV-Projekt erstellen
Initialisieren, synchronisieren und erstellen Sie Ihren AAOS-SDV-Checkout, bevor Sie beginnen. Weitere Informationen zum Einrichten des Check-outs finden Sie unter Code-Speicherort und Herunterladen, erstellen und ausführen.
So erstellen Sie ein SDV-Projekt:
- Erstellen Sie ein neues Projekt in ASfP und wählen Sie das Stammverzeichnis Ihres AAOS-SDV-Checkouts als Repository-Checkout aus. Weitere Informationen zu den Schritten des Assistenten finden Sie unter Projekt erstellen oder importieren.
- Nachdem ASfP das Projekt erstellt hat, wählen Sie ASfP > Projekt > Konfiguration öffnen aus, um die Datei
.asfp-projectzu öffnen. Ersetzen Sie den Inhalt der Datei durch das folgende Beispiel und legen Sie für
repoden Pfad zu Ihrem Checkout fest:repo: /path/to/sdv_source lunch: sdv_core_cf-aosp_current-userdebug directories: include: - system/software_defined_vehicle/samples other_languages: - rustAktualisieren Sie
lunchunddirectoriesfür den Bereich, an dem Sie arbeiten. Damit die Indexierung und Synchronisierung schnell bleiben, sollten Sie nur die Verzeichnisse einbeziehen, die Sie aktiv ändern. In der folgenden Tabelle sind gängige SDV-Ziele und -Verzeichnisse aufgeführt:Fokus der SDV-Entwicklung lunchZieldirectoriesempfohlenSDV-Dienstpakete sdv_core_cf-aosp_current-userdebugIhr Service Catalog und Ihr Bundle-Verzeichnis, z. B. system/software_defined_vehicle/samplesIntegration der SDV-Kernplattform sdv_core_cf-aosp_current-userdebugsystem/software_defined_vehicle/middleware,system/software_defined_vehicle/automotive_services,device/google/sdvSDV-Gateway auf SDV-IVI sdv_ivi_cf-aosp_current-userdebugsystem/software_defined_vehicle/sdv_gateway,system/software_defined_vehicle/samples/sdv_gateway,packages/services/CarSicherheitshinweise auf dem SDV-Display sdv_media_har_cf-aosp_current-userdebugpackages/services/display_safety,device/google/sdv_display_safetyDisplay Safety on SDV IVI sdv_ivi_cf_ds-aosp_current-userdebugpackages/apps/Car/DriverUI,packages/services/display_safety/serviceWenn für Ihren Bezahlvorgang ein
trunk_staging-Manifest verwendet wird, ersetzen Sie-aosp_current-userdebugdurch-trunk_staging-userdebug. Wenn Sie auch nativen Plattformcode durchsuchen möchten, fügen Siecppzuother_languageshinzu. Weitere Informationen zu allen Konfigurationsoptionen finden Sie unter Konfigurationsparameter.Wählen Sie ASfP > Synchronisieren > Projekt synchronisieren aus, um die Änderungen zu übernehmen. Weitere Informationen zu Synchronisierungsmodi (vollständige Synchronisierung, teilweise Synchronisierung und Synchronisierung ohne Build) und zum Exportieren oder Importieren von freigebbaren
.asfp-project-Vorlagen für Ihr Team finden Sie unter Synchronisierungsmodi und Soong-Toolfenster und Freigebbare Projektvorlagen (Export und Import).
SDV-Dienst-Bundles bereitstellen
ASfP enthält ein SDV-Plug-in, mit dem ein APEX mit Ihren Dienst-Bundles direkt auf einem laufenden SDV-Gerät bereitgestellt wird. Das Plug-in ist standardmäßig deaktiviert. Wenn Sie es verwenden möchten, aktivieren Sie das SDV-Plug-in unter Einstellungen > Plug-ins. Weitere Informationen zum APEX-Paket finden Sie unter Dienst-Bundles erstellen und bereitstellen.
Wie du die Bereitstellung vornimmst, hängt davon ab, ob sich die APEX-Datei bereits auf dem Gerät befindet:
- Wenn APEX bereits installiert ist, können Sie Ihre Änderungen direkt über ASfP bereitstellen.
- Wenn das APEX neu ist, müssen Sie zuerst das System-Image neu erstellen und neu starten oder ein System-Image verwenden, das den Schlüssel enthält, mit dem das APEX signiert wurde. Anschließend können Sie die Bereitstellung über ASfP vornehmen.
So stellen Sie ein APEX-Dienst-Bundle bereit:
- Starten Sie Ihr SDV-Gerät mit dem Cuttlefish-Plug-in. Weitere Informationen findest du unter SDV-Geräte auf Cuttlefish ausführen.
- Öffnen Sie die Datei
apex/Android.bpIhres Dienst-Bundles und klicken Sie auf das Symbol Ausführen im Gutter neben dem Blockapex {. - Wählen Sie im Menü, das sich öffnet, „Deploy APEX_NAME“ ausführen aus. Sie können die APEX auch erstellen, ohne sie bereitzustellen, oder die Ausführungskonfiguration im selben Menü ändern.
SDV-Geräte auf Cuttlefish ausführen
ASfP enthält ein Cuttlefish-Plug-in, mit dem lokale Cuttlefish-Geräte erstellt und ausgeführt werden können. Das Plug-in benötigt den Cuttlefish-Host-Orchestrator. Wenn der Host-Orchestrator nicht verfügbar ist, werden in ASfP Anleitungen zum Einrichten angezeigt.
So erstellen Sie ein SDV-Gerät:
- Wählen Sie Tools > Gerätemanager aus, klicken Sie auf + und wählen Sie Cuttlefish-Gerät erstellen aus.
- Wenn Sie eine Einrichtung mit mehreren VMs erstellen möchten, wählen Sie Aus kanonischer Konfiguration aus und erstellen oder importieren Sie eine Konfiguration für Ihre Einrichtung, z. B. SDV Core mit SDV IVI oder SDV Media mit SDV IVI für Display Safety. Wenn Sie eine einzelne VM erstellen möchten, wählen Sie stattdessen Aus lokalem Android-Quellbaum-Checkout aus.
Wenn Sie alle VM-Anzeigen auf einem einzigen Bildschirm sehen und auf zusätzliche Geräteoptionen zugreifen möchten, verwenden Sie das Toolfenster Cuttlefish. Wählen Sie zum Öffnen das Symbol ... in der Seitenleiste und dann Cuttlefish aus oder suchen Sie unter Hilfe > Aktion suchen nach Cuttlefish. Sie können sich auch einzelne Displays unter Ausgeführte Geräte ansehen. Da SDV Core ohne Display ausgeführt wird, verwenden Sie Logcat und das Terminal, um es zu prüfen.
Fehler beheben und testen
ASfP enthält einen integrierten LLDB-Debugger für C++- und Rust-Code. Weitere Informationen zum Debuggen und Testen in ASfP finden Sie unter Plattformcode debuggen, Rust-Code debuggen, Plattformcode mit atest testen und cc_test- und rust_test-Ziele unter LLDB debuggen.
Wenn Sie den Debugger an ein Dienst-Bundle anhängen, hängen Sie ihn an den Prozess an, der es hostet. Prozessnamen haben das Format <bundle_name>:<instance_name>, z. B. OrchestratorSampleRustServiceBundle:sample-main-no-conditions. Mit dem folgenden Befehl werden übereinstimmende Prozesse und ihre Prozess-IDs aufgelistet:
adb shell ps -A | grep <bundle_name>
Weitere Informationen zu SDV-Debugging-Workflows, z. B. zum Herstellen einer Verbindung zu mehreren Geräten und zum Aufrufen von Logs, finden Sie unter SDV debuggen.
VSIDL-Dateien bearbeiten
ASfP enthält den VSIDL-Sprachserver (vsidl-lsp). Weitere Informationen zum Einrichten Ihres Katalogs für den Sprachserver finden Sie unter Automatische Katalogaktualisierungen und LSP-Integration. Wenn Ihr Katalog eine CATALOG_UPDATE-Datei enthält, bietet der Editor die folgenden Funktionen für .vsidl-Dateien:
- Live-Validierung: Der Editor hebt VSIDL-Schlüsselwörter hervor und zeigt Syntaxfehler, nicht aufgelöste Typen und VSIDLC-Validierungsfehler im Fenster Probleme an. Weitere Informationen zu den Validierungsregeln und ihren Fehlercodes finden Sie in der VSIDL-Sprachspezifikation.
- Automatische Vervollständigung und Dokumentation: Sie können Strg + Leertaste drücken, um Vorschläge für Schlüsselwörter, Nachrichten, Dienste, Themen und Kanäle zu erhalten. Drücken Sie Strg + Q, um Dokumentationskommentare aufzurufen.
- Navigation und Formatierung: Sie können Strg + B drücken, um zu
.vsidl- oder.proto-Definitionen zu gelangen, Alt + Umschalttaste + F7, um Referenzen zu finden, Strg + F12, um die Dateistruktur aufzurufen, und Strg + Alt + L, um die Datei zu formatieren.
SDV-Kontext für KI-Assistenten hinzufügen
ASfP umfasst KI in Android Studio und einen integrierten Agenten mit Soong-Build- und atest-Tools. Weitere Informationen zu den KI-Funktionen von ASfP finden Sie unter Android Studio for Platform. Damit der KI-Assistent die SDV-Konventionen einhält, fügen Sie dem Stammverzeichnis Ihres VSIDL-Katalogs eine AGENTS.md-Datei hinzu.
Weitere Informationen zu Agentendateien finden Sie unter Gemini mit AGENTS.md-Dateien anpassen.
Das folgende Beispiel ist ein Ausgangspunkt, den Sie an Ihren Katalog anpassen können:
# 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.