AOSP-Host einbinden

Der Automotive App Host des Android Open Source Project (AOSP) ist Teil der Car App Library, die von Drittanbieterentwicklern verwendet wird, um Apps für Android Automotive zu aktivieren. Der App-Host ist eine System-App, mit der Drittanbieter-Auto-Apps im Namen des OEM Benutzeroberflächenkomponenten (UI) im OEM-Stil rendern können.

Damit 3P-Apps ausgeführt werden können, müssen sowohl die 3P-App als auch der AOSP Automotive App Host installiert sein:

  • Automotive App Host bietet Drittanbieter-Apps eine Reihe von Benutzeroberflächenvorlagen und ‑komponenten, die für Fahrzeuge optimiert sind und Funktionen wie Benutzerfreundlichkeit und Sicherheit bieten.
  • OEMs können diese UI-Vorlagen und ‑Komponenten gestalten.
  • Das Ergebnis: Drittanbieter-Apps sind optisch gut in das Infotainmentsystem des OEM integriert.

Auf dieser Seite wird erläutert, wie Sie den AOSP Automotive App Host aus dem Gradle-Projekt im ub-automotive-Branch generieren und dann in Fahrzeugziele einbinden.

Code ansehen

So rufen Sie den entbündelten Code auf:

  1. Führen Sie dazu diesen Befehl aus:
    repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master
    repo sync -j4
  2. Weitere Informationen zum Arbeiten mit AOSP-Quellcode finden Sie unter Repo-Client initialisieren.

  3. Installieren Sie Android Studio.

AOSP-Host-APK erstellen

  1. Sehen Sie sich ub-automotive an und öffnen Sie dann das Gradle-Projekt unter packages/apps/Car/Templates/Host.
  2. Wenn Sie das Projekt mit dem Android SDK konfigurieren möchten, konfigurieren Sie die Datei local.properties Ihres Projekts. Sie finden den Pfad in Android Studio unter „Android SDK Settings“.
    sdk.dir=${path_to_android_sdk_location}
  3. Erstellen Sie das Host-APK als typisches Gradle-Projekt. Führen Sie dazu beispielsweise den folgenden gradle-Befehl aus:
    ./gradlew :app:assembleDebug

    Die APK-Datei befindet sich unter:

    packages/apps/Car/Templates/Host/app/build/outputs/apk/debug/app-debug.apk

AOSP-Host einbetten

  1. Erstellen Sie eine neue Android.mk-Datei mit folgendem Inhalt:
    LOCAL_PATH := $(my-dir)
    ################## Start of AOSPHost target ##################
    include $(CLEAR_VARS)
    LOCAL_MODULE := CarAOSPHost
    LOCAL_LICENSE_KINDS := legacy_notice
    LOCAL_LICENSE_CONDITIONS := notice
    LOCAL_MODULE_OWNER := google
    LOCAL_SRC_FILES := AOSPHost.apk
    LOCAL_MODULE_CLASS := APPS
    LOCAL_MODULE_TAGS := optional
    LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
    LOCAL_BUILT_MODULE_STEM := package.apk
    LOCAL_CERTIFICATE := PRESIGNED
    LOCAL_PRIVILEGED_MODULE := true
    LOCAL_PRODUCT_MODULE := true
    LOCAL_DEX_PREOPT := false
    include $(BUILD_PREBUILT)
  2. Benennen Sie die Datei app-debug.apk in AOSPHost.apk um und speichern Sie die APK-Datei im selben Ordner wie Android.mk.
  3. Fügen Sie das Modul CarAOSPHost Ihren Zielen als PRODUCT_PACKAGES hinzu:
    PRODUCT_PACKAGES += \
       CarAOSPHost \

Berechtigungskonfiguration hinzufügen

  1. Erstellen Sie eine Datei mit dem Namen com.android.car.templates.host.xml, die Folgendes enthält:
    <permissions>
        <!-- Rename the package to com.android.car.templates.host -->
        <privapp-permissions package="com.android.car.templates.host">
            <!-- To be able to display activities in the cluster -->
            <permission name="android.car.permission.CAR_DISPLAY_IN_CLUSTER" />
    
            <!-- To be able to show navigation state (turn by turn directions) in the cluster.-->
            <permission name="android.car.permission.CAR_NAVIGATION_MANAGER" />
    
            <!-- To be considered a system-approved host -->
            <permission name="android.car.permission.TEMPLATE_RENDERER" />
        </privapp-permissions>
    
        <!-- Declare support for templated applications. -->
        <feature name="android.software.car.templates_host" />
    </permissions>
  2. Fügen Sie Ihrem Ziel die Konfigurationsdatei hinzu:
    PRODUCT_COPY_FILES += \
        <the file root>/com.android.car.templates.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.android.car.templates.host.xml

Ziel erstellen

Wenn Sie das Zielvorhaben erstellen, wird der Host installiert und die Berechtigung erteilt:

      
      android.car.permission.CAR_NAVIGATION_MANAGER: granted=true
      android.car.permission.CAR_DISPLAY_IN_CLUSTER: granted=true
      android.car.permission.TEMPLATE_RENDERER: granted=true
      

Integration testen

Informationen zum Erstellen und Installieren der Beispiele finden Sie in diesem GitHub-Projekt: car-samples/car_app_library.