Leitfaden zur AOSP-Host-Integration

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Der Android Open Source Project (AOSP) Automotive App Host 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, Komponenten der Benutzeroberfläche (UI) im OEM-Stil in seinem Namen 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 bietet 3P-Apps eine Reihe von UI-Vorlagen und Komponenten, 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 erklärt, wie man den AOSP Automotive App Host aus dem Gradle-Projekt im ub-automotive Zweig generiert und anschließend den AOSP Automotive App Host in Car Targets integriert.

Überprüfen Sie den Code

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 local.properties -Datei Ihres Projekts. Sie finden den Pfad 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 in:

    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 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 app-debug.apk in AOSPHost.apk um und legen Sie die APK im selben Ordner wie Android.mk .
  3. Fügen Sie das Modul CarAOSPHost als PRODUCT_PACKAGES :
    PRODUCT_PACKAGES += \
       CarAOSPHost \
    
    zu Ihren Zielen hinzu

Fügen Sie die Berechtigungskonfiguration hinzu

  1. Erstellen Sie eine Datei namens 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
    

Baue 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 .