IDE für die SDV-Entwicklung einrichten

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:

  1. 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.
  2. Nachdem ASfP das Projekt erstellt hat, wählen Sie ASfP > Project > Open Config aus, um die .asfp-project-Datei zu öffnen.
  3. Ersetzen Sie den Inhalt der Datei durch das folgende Beispiel und legen Sie dann repo auf 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:
      -   rust
    
  4. Aktualisieren Sie lunch und directories fü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 lunch Ziel Empfohlen directories
    SDV-Servicepakete sdv_core_cf-aosp_current-userdebug Ihr Dienstkatalog und Ihr Paketverzeichnis, z. B. system/software_defined_vehicle/samples
    Integration der SDV Core-Plattform sdv_core_cf-aosp_current-userdebug system/software_defined_vehicle/middleware, system/software_defined_vehicle/automotive_services, device/google/sdv
    SDV Gateway auf SDV IVI sdv_ivi_cf-aosp_current-userdebug system/software_defined_vehicle/sdv_gateway, system/software_defined_vehicle/samples/sdv_gateway, packages/services/Car
    Display Safety on SDV Media sdv_media_har_cf-aosp_current-userdebug packages/services/display_safety, device/google/sdv_display_safety
    Sicherheit auf SDV IVI anzeigen sdv_ivi_cf_ds-aosp_current-userdebug packages/apps/Car/DriverUI, packages/services/display_safety/service

    Wenn in Ihrem Bezahlvorgang ein trunk_staging-Manifest verwendet wird, ersetzen Sie -aosp_current-userdebug durch -trunk_staging-userdebug. Wenn Sie auch Code für native Plattformen aufrufen möchten, fügen Sie cpp zu other_languages hinzu. Weitere Informationen zu allen Konfigurationsoptionen finden Sie unter Konfigurationsparameter.

  5. 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:

  1. Starten Sie Ihr SDV-Gerät mit dem Cuttlefish-Plug-in. Weitere Informationen finden Sie unter SDV-Geräte auf Cuttlefish ausführen.
  2. Öffnen Sie die Datei apex/Android.bp Ihres Dienstbündels und klicken Sie in der Spalte neben dem Block apex { auf das Symbol Ausführen.
  3. 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:

  1. Wählen Sie Tools > Gerätemanager aus, klicken Sie auf + und wählen Sie Create Cuttlefish Device (Cuttlefish-Gerät erstellen) aus.
  2. 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.