Android Studio for Platform (ASfP) ist die empfohlene integrierte Entwicklungsumgebung (IDE) für die Entwicklung von Software-Defined Vehicle (SDV) Plattformen für Android Automotive OS (AAOS). ASfP unterstützt alle Sprachen, die von der AAOS SDV-Plattform verwendet werden, einschließlich Rust für SDV-Service-Bundles.
Auf dieser Seite wird nur die SDV-spezifische Einrichtung behandelt. Weitere Informationen zu allgemeinen ASfP-Funktionen und ‑Workflows finden Sie unter Android Studio for Platform.
ASfP kann nur auf 64-Bit-Linux-Systemen mit x86-64-CPUs ausgeführt werden. Sie können es auf einer lokalen Linux-Workstation oder in der Cloud verwenden. Weitere Informationen zur Einrichtung in der Cloud finden Sie unter Cloud-Entwicklung.
ASfP installieren
Weitere Informationen zum Herunterladen und Installieren von ASfP sowie zu den Systemanforderungen finden Sie unter Android Studio for Platform installieren.
Das Indexieren eines Plattform-Checkouts erfordert viel Arbeitsspeicher, insbesondere wenn Sie auch Cuttlefish-Geräte mit mehreren VMs auf demselben Computer ausführen. Wenn ASfP langsam ausgeführt wird, erhöhen Sie die maximale Heap-Größe in den ASfP-Speichereinstellungen, um sie an Ihr Projekt und Ihren Computer anzupassen. Beschränken Sie Ihr Projekt auf die Verzeichnisse, in denen Sie arbeiten.
SDV-Projekt erstellen
Initialisieren, synchronisieren und erstellen Sie Ihren AAOS SDV-Checkout, bevor Sie beginnen. Weitere Informationen zum Einrichten der Kaufabwicklung 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 > Project > Open Config aus, um die
.asfp-project-Datei zu öffnen. Ersetzen Sie den Inhalt der Datei durch das folgende Beispiel und legen Sie dann
repoauf den Pfad Ihres Check-outs 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, in dem Sie arbeiten. Damit die Indexierung und Synchronisierung schnell erfolgen, sollten Sie nur die Verzeichnisse einbeziehen, die Sie aktiv bearbeiten. In der folgenden Tabelle sind häufige SDV-Ziele und ‑Verzeichnisse aufgeführt:SDV-Entwicklungsfokus lunchZielEmpfohlen directoriesSDV-Servicepakete sdv_core_cf-aosp_current-userdebugIhr Dienstkatalog und Ihr Paketverzeichnis, z. B. system/software_defined_vehicle/samplesIntegration der SDV Core-Plattform 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/CarDisplay Safety on SDV Media sdv_media_har_cf-aosp_current-userdebugpackages/services/display_safety,device/google/sdv_display_safetySicherheit auf SDV IVI anzeigen sdv_ivi_cf_ds-aosp_current-userdebugpackages/apps/Car/DriverUI,packages/services/display_safety/serviceWenn in Ihrem Bezahlvorgang ein
trunk_staging-Manifest verwendet wird, ersetzen Sie-aosp_current-userdebugdurch-trunk_staging-userdebug. Wenn Sie auch Code für native Plattformen aufrufen möchten, fügen Siecppzuother_languageshinzu. Weitere Informationen zu allen Konfigurationsoptionen finden Sie unter Konfigurationsparameter.Wählen Sie zum Anwenden der Änderungen Datei > Projekt synchronisieren aus.
SDV-Dienstpakete bereitstellen
ASfP enthält ein SDV-Plug-in, mit dem ein APEX mit Ihren Service-Bundles direkt auf einem laufenden SDV-Gerät bereitgestellt wird. Das Plug-in ist standardmäßig deaktiviert. Um das Plugin zu verwenden, aktivieren Sie es unter Einstellungen > Plugins. Weitere Informationen zum APEX-Packaging finden Sie unter Dienstbündel erstellen und bereitstellen.
Die Bereitstellung hängt davon ab, ob der APEX bereits auf dem Gerät vorhanden ist:
- Wenn der APEX bereits installiert ist, können Sie Ihre Änderungen direkt über ASfP bereitstellen.
- Wenn der APEX neu ist, müssen Sie zuerst das System-Image neu erstellen und starten oder ein System-Image verwenden, das den zum Signieren des APEX verwendeten Schlüssel enthält. Danach können Sie die Bereitstellung über ASfP vornehmen.
So stellen Sie ein Service-Bundle-APEX bereit:
- Starten Sie Ihr SDV-Gerät mit dem Cuttlefish-Plug-in. Weitere Informationen finden Sie unter SDV-Geräte auf Cuttlefish ausführen.
- Öffnen Sie die Datei
apex/Android.bpIhres Dienstbündels und klicken Sie in der Spalte neben dem Blockapex {auf das Symbol Ausführen. - Wählen Sie im angezeigten Menü „Deploy APEX_NAME“ ausführen aus. Sie können das APEX auch erstellen, ohne es bereitzustellen, oder die Ausführungskonfiguration über dasselbe 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. Das Plug‑in benötigt den Cuttlefish-Host-Orchestrator. Wenn der Host-Orchestrator nicht verfügbar ist, zeigt ASfP eine Anleitung zur Einrichtung an.
So erstellen Sie ein SDV-Gerät:
- Wählen Sie Tools > Gerätemanager aus, klicken Sie auf + und wählen Sie Create Cuttlefish Device (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 From local Android source tree checkout aus.
Wenn Sie alle VM-Displays auf einem Bildschirm sehen und auf zusätzliche Geräteoptionen zugreifen möchten, verwenden Sie das Cuttlefish-Toolfenster. Klicken Sie in der Seitenleiste auf das Symbol ... und wählen Sie Cuttlefish aus. Alternativ können Sie unter Hilfe > Aktion suchen nach Cuttlefish suchen. Du kannst dir auch einzelne Displays unter Laufende Geräte ansehen. Da SDV Core ohne Display ausgeführt wird, müssen Sie Logcat und das Terminal verwenden, um es zu prüfen.
Fehler beheben und testen
Weitere Informationen zum Debuggen und Testen in ASfP finden Sie unter Plattformcode debuggen und Plattformcode testen. Weitere Informationen zum Einrichten von CodeLLDB zum Debuggen von Rust-Service-Bundles finden Sie unter Rust-Debugging.
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 aufgeführt:
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 Ansehen 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 Problems 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 Channels zu erhalten, und Strg + Q, um Dokumentationskommentare aufzurufen.
- Navigation und Formatierung: Sie können Strg+B drücken, um zu
.vsidl- oder.proto-Definitionen zu gelangen, Alt+Umschalt+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 Gemini in Android Studio. Weitere Informationen zu ASfP-Funktionen finden Sie unter Android Studio for Platform. Damit Gemini oder ein anderer KI-Coding-Assistent den SDV-Konventionen folgt, fügen Sie dem Stammverzeichnis Ihres SDV-Katalogs eine AGENTS.md-Datei hinzu. Weitere Informationen zu Agent-Dateien 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.