AOSP-Host-Integrationsanleitung

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

Zum Ausführen von Drittanbieter-Apps müssen sowohl die Drittanbieter-App als auch der AOSP Automotive App Host installiert sein:

  • Automotive App Host bietet Drittanbieter-Apps eine Reihe von für Fahrzeuge optimierten UI-Vorlagen und ‑Komponenten, einschließlich Funktionen wie Nutzerfreundlichkeit und Sicherheit.
  • OEMs können diese UI-Vorlagen und ‑Komponenten stylen.
  • Das Ergebnis: Drittanbieter-Apps sind optisch gut in das Infotainmentsystem des OEMs integriert.

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

Code auschecken

So rufen Sie den entkoppelten Code auf:

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

  3. Installieren Sie Android Studio.

AOSP-Host-APK erstellen

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

    Die APK-Datei befindet sich hier:

    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 app-debug.apk in AOSPHost.apk um und legen Sie die APK-Datei in demselben Ordner wie Android.mk ab.
  3. Fügen Sie das CarAOSPHost-Modul als PRODUCT_PACKAGES zu Ihren Zielen 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 die Konfigurationsdatei Ihren Zielen 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 Ziel erstellen, wird der Host installiert und die Berechtigung gewährt:

      
      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.