Leitfaden zur AOSP-Host-Integration

Der Automotive App Host des Android Open Source Project (AOSP) ist Teil der Car App Library, die von Drittentwicklern (3P) verwendet wird, um Apps für Android Automotive zu ermöglichen. Der App Host ist eine System-App, die es 3P-Auto-Apps ermöglicht, in ihrem Namen Benutzeroberflächenkomponenten im OEM-Stil zu rendern.

Um 3P-Apps auszuführen, müssen sowohl die 3P-App als auch der AOSP Automotive App Host installiert sein:

  • Automotive App Host stellt 3P-Apps eine Reihe von UI-Vorlagen und Komponenten bereit, die für Fahrzeuge optimiert sind, einschließlich Funktionen wie Benutzerfreundlichkeit und Sicherheit.
  • OEMs können diese UI-Vorlagen und -Komponenten gestalten.
  • Das Ergebnis? 3P-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 in der ub-automotive Branche generieren und anschließend den AOSP Automotive App Host in Autoziele integrieren.

Schauen Sie sich den Code an

So überprüfen Sie den entbündelten Code:

  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 zum Arbeiten mit AOSP-Quellcode finden Sie unter Initialisieren eines Repo-Clients .

  3. Installieren Sie Android Studio .

Erstellen Sie das AOSP-Host-APK

  1. Schauen Sie sich ub-automotive an und öffnen Sie dann das Gradle-Projekt unter packages/apps/Car/Templates/Host .
  2. Um das Projekt mit dem Android SDK zu konfigurieren, konfigurieren Sie die Datei local.properties Ihres Projekts. Den Pfad finden Sie unter Android SDK-Einstellungen in Android Studio.
    sdk.dir=${path_to_android_sdk_location}
    
  3. Erstellen Sie das Host-APK als typisches Gradle-Projekt. Führen Sie beispielsweise den 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

Betten Sie den AOSP-Host ein

  1. Erstellen Sie eine neue Android.mk Datei mit dem folgenden 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 im selben Ordner wie Android.mk ab.
  3. Fügen Sie das CarAOSPHost Modul als PRODUCT_PACKAGES :
    PRODUCT_PACKAGES += \
       CarAOSPHost \
    
    zu Ihren Zielen hinzu

Fügen Sie die Berechtigungskonfiguration hinzu

  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 in Ihrem Ziel die Konfigurationsdatei zu 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
    

Bauen Sie das Ziel

Wenn Sie das Ziel 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
      …

Testen Sie die Integration

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