Projektübersicht und Soong-Workflows

Ein Projekt in Android Studio for Platform (ASfP) enthält alles, was Ihren Arbeitsbereich für Ihre AOSP-Codebasis definiert, von Quellcode und Assets bis hin zu Testcode und Soong-Build-Konfigurationen.

ASfP basiert auf dem IntelliJ-Arbeitsbereichsmodell und erstellt große Plattformprojekte. Beim Start wird Ihr Projektmodell aus zwischengespeicherten Snapshots wiederhergestellt. Inhalte im Verzeichnis out/ und generierte gen-Dateien werden aus den Projekt-Suchbereichen ausgeschlossen, damit die Symbol- und Dateinavigation schnell bleibt.

Projektkonfiguration (.asfp-project)

Die YAML-Datei .asfp-project im Stammverzeichnis Ihres Projektverzeichnisses steuert die ASfP-Projektkonfiguration. In dieser Datei wird definiert, welche Verzeichnisse, Soong-Module, Sprachen und Build-Flags in Ihren Arbeitsbereich aufgenommen werden.

Sie können Ihre Projektkonfiguration jederzeit mit einer der folgenden Optionen öffnen:

  • Wählen Sie im Hauptmenü ASfP > Project > Open Config aus.
  • Doppelklicken Sie im Stammverzeichnis des Toolfensters Project auf .asfp-project.
  • Klicken Sie in der Symbolleiste des Toolfensters Soong auf Open Config.

Nachdem Sie .asfp-project bearbeitet haben, führen Sie eine Projektsynchronisierung aus, damit Ihre Änderungen übernommen werden.

Freigabefähige Projektvorlagen (Export und Import)

Teams, die am selben Subsystem arbeiten (z. B. SystemUI, Einstellungen, SurfaceFlinger oder Automotive), können eine Standardkonfiguration .asfp-project als Vorlage freigeben:

  • In Vorlage exportieren: rechtsklicken Sie auf den .asfp-project Editor-Tab oder wählen Sie ASfP > Project > Export Config to Template aus, um eine freigabefähige Vorlagen datei zu speichern.

    ASfP-Projektkonfiguration in eine freigabefähige Vorlage exportieren

  • Import from template: Wenn Sie im Einrichtungsassistenten für Projekte ein neues Projekt erstellen, wählen Sie Import from template aus und wählen Sie die freigegebene .asfp-project YAML-Datei aus, um Verzeichnisse, Module und Build-Einstellungen vorab auszufüllen.

Konfigurationsparameter

Die Datei .asfp-project unterstützt die folgenden Parameter:

repo

Erforderlich: Absoluter Pfad zum Stammverzeichnis Ihres Android-Plattform-Repository-Checkouts.

repo: /path/to/aosp

lunch

Erforderlich: Das Lunch-Ziel in Verbindung mit Ihrem Projekt. Wird für alle Soong-Build-, Synchronisierungs- und Bereitstellungsaktionen verwendet.

lunch: aosp_cf_x86_64_phone-aosp_current-userdebug

directories

Optional: Verzeichnisse, die in Ihr Projekt aufgenommen oder daraus ausgeschlossen werden sollen (relativ zum repo Stammverzeichnis). Verzeichnisse mit symbolischen Links und Quellstämme werden unterstützt.

directories:
  include:
    -   frameworks/base
    -   packages/apps/Settings
  exclude:
    -   vendor
    -   out/soong

modules

Optional: Bestimmte Soong-Module, die in Ihr Projekt aufgenommen oder daraus ausgeschlossen werden sollen. Funktioniert in Verbindung mit directories. Sowohl vollständige als auch abgekürzte Modulnamen werden unterstützt.

modules:
  include:
    -   SystemUI
    -   frameworks/base/services/core/java:services
  exclude:
    -   UnusedModule

test_sources

Optional: Relative Pfade, die als Testquellstämme markiert werden sollen, wenn die automatische Testquellheuristik von ASfP manuell überschrieben werden muss.

test_sources:
  -   cts/tests/tests/example
  -   tests/mytests

other_languages

Optional: Die Unterstützung für Java, Kotlin und Android.bp ist standardmäßig aktiviert. Fügen Sie cpp für C und C++ oder rust für die Unterstützung der Rust-Sprache hinzu:

other_languages:
  -   cpp
  -   rust

build_config

Optional: Benutzerdefinierte Flags oder Umgebungsvariablen, die an Soong-Build Aufrufe übergeben werden, die von der IDE ausgelöst werden (einschließlich Synchronisierungen, Gutter-Builds und Ausführungskonfigurationen):

build_config:
  flags:
    -   -j64
  env:
    SOONG_PARTIAL_COMPILE: true
    SOONG_ALLOW_MISSING_DEPENDENCIES: true

Synchronisierungsmodi und Soong-Toolfenster

ASfP bietet je nach Workflow-Anforderungen mehrere Möglichkeiten, Ihr IDE-Projekt mit Ihrem AOSP-Checkout zu synchronisieren. Sie können auf diese Aktionen über das Menü ASfP > Sync oder das Toolfenster Soong zugreifen:

  • Sync Project: Analysiert Ihre konfigurierten Verzeichnisse und Module und aktualisiert die IDE-Indexierung und -Abhängigkeiten.
  • Partial Sync: Synchronisiert nur eine bestimmte Teilmenge von Modulen oder Verzeichnissen, wodurch Zeit gespart wird, wenn Sie in einem lokalisierten Bereich der Struktur arbeiten.
  • No-Build Sync: Aktualisiert die IDE-Projektstruktur und die Quellstämme, ohne einen Soong-Build-Schritt auszuführen. Dies ist nützlich, wenn Sie Quelldateien hinzugefügt oder verschoben oder bereits über das Terminal erstellt haben.
  • Sync and Full Build: Kombiniert die Projektsynchronisierung mit einem vollständigen Soong Build in einem einzigen Schritt.

Im Toolfenster Soong (View > Tool Windows > Soong) werden Echtzeit-Statusindikatoren für jeden Synchronisierungsaufgabenknoten, Build-Schaltflächen für den Schnellzugriff und die Ausführung von Soong-Befehlen angezeigt.


In-Editor-Build, Bereitstellung und Navigation von Android.bp

ASfP bietet integrierte Editorunterstützung für Android.bp-Dateien:

Build-, Ausführungs- und Debug-Ziele über den Gutter

Öffnen Sie eine beliebige Android.bp-Datei in Ihrem Projekt, um Ziele über zwei Gutter-Symbole zu erstellen oder zu starten:

  • Build-Symbol (alle benannten Module): Wird neben name: für jedes benannte Modul (cc_library_shared, java_library, rust_binary, android_app, und Testziele) angezeigt, um dieses Soong-Ziel zu erstellen (Build "<module>").
  • Symbol für Ausführen oder Debuggen (*_test, *_test_host und android_app): Klicken Sie neben einem Testmodul oder einer android_app-Deklaration auf Run, um das Modul auszuführen oder zu debuggen. android_test -Module werden über atest debuggt und cc_test*- und rust_test*-Module werden unter dem integrierten LLDB gestartet.

Module über die Symbole in der Android.bp-Spalte erstellen, ausführen und debuggen

Kontextbezogene Ausführungs- und Flash-Konfigurationen

Für bereitstellbare Module in Android.bp-Dateien können Sie kontextbezogene Soong Deploy -Ausführungskonfigurationen über den Gutter oder das Kontextmenü erstellen und starten. Diese bieten die folgenden Funktionen:

  • Bereitstellungsmethoden: Bereitstellung mit adb, benutzerdefinierten Shell-Skripts, adevice, oder flashall.
  • Soong-Build-Hooks vor der Ausführung: Erstellen Sie das Ziel-Soong-Modul automatisch bevor Sie es auf Ihrem verbundenen Gerät oder dem virtuellen Cuttlefish-Gerät bereitstellen.

„Adevice“- oder „Flashall“-Konfigurationen in ASfP auswählen

Zwischen Quellcode und Android.bp wechseln

Klicken Sie in einer beliebigen Quelldatei oder einem beliebigen Quellverzeichnis im Toolfenster Project , auf dem Editor-Tab oder im Kontextmenü des Editors mit der rechten Maustaste und wählen Sie Open Corresponding Android.bp File aus. ASfP sucht und hebt die Android.bp-Moduldeklaration hervor, die diese Datei kompiliert, und löst defaults-Blöcke, Platzhaltermuster für srcs und symbolische Links auf.

Kontextmenüaktion „Entsprechende Android.bp-Datei öffnen“

Android.bp-Editorintelligenz und Tooltip-Dokumentation

  • Dateiübergreifende Navigation und Anzahl der Verwendungen: Klicken Sie bei gedrückter Strg-Taste auf einen beliebigen Modul verweis, eine beliebige srcs-Datei oder einen beliebigen soong_config_module_type, um zur Deklaration zu springen. Neben Modulnamen und freigegebenen srcs-Zielen werden anklickbare Inlay-Hinweise N Usages angezeigt. Nicht referenzierte Bibliotheksmodule werden visuell abgeblendet.
  • Tooltips zur Soong-Eigenschaftsdokumentation: Bewegen Sie den Mauszeiger auf eine beliebige Eigenschaft in einer Android.bp-Datei, einschließlich architektur- oder zielbezogener Eigenschaften unter target, arch und multilib, um die Soong-Typsignatur und die Dokumentation inline anzuzeigen.

Kurzinfos zur Dokumentation von Android.bp-Properties und Inlay-Hinweise zur Verwendung


Verwaltung virtueller Cuttlefish-Geräte und Spiegelung mehrerer Bildschirme

ASfP enthält ein integriertes Cuttlefish-Plug-in für Plattform-, Android Automotive OS (AAOS)- und Software-Defined Vehicle (SDV)-Entwickler, die mit lokal erstellten virtuellen Cuttlefish-Geräten arbeiten:

  • Einrichtung mehrerer Geräte im Device Manager: Erstellen und verwalten Sie Setups für virtuelle Cuttlefish-Geräte mit mehreren Geräten im Device Manager mit Ihrem lokalen AOSP-Checkout ($ANDROID_BUILD_TOP und $ANDROID_PRODUCT_OUT).
  • Spiegelung mehrerer Bildschirme im Toolfenster „Cuttlefish“: Öffnen Sie View > Tool Windows > Cuttlefish , um die integrierte Spiegelung mehrerer Bildschirme von Cuttlefish zu nutzen. So können Sie mehrere Automotive-Displays gleichzeitig für AAOS- und SDV-Workflows ansehen und mit ihnen interagieren.

Cuttlefish-Toolfenster und Spiegelung auf mehreren Bildschirmen in ASfP