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:
- Führen Sie den folgenden Befehl aus:
repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-main repo sync -j4
Weitere Informationen zum Arbeiten mit AOSP-Quellcode finden Sie unter Initialisieren eines Repo-Clients .
- Installieren Sie Android Studio .
Erstellen Sie das AOSP-Host-APK
- Schauen Sie sich
ub-automotive
an und öffnen Sie dann das Gradle-Projekt unterpackages/apps/Car/Templates/Host
. - 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}
- 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
- 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)
- Benennen Sie
app-debug.apk
inAOSPHost.apk
um und legen Sie die APK im selben Ordner wieAndroid.mk
ab. - Fügen Sie das
CarAOSPHost
Modul alsPRODUCT_PACKAGES
:PRODUCT_PACKAGES += \ CarAOSPHost \
zu Ihren Zielen hinzu
Fügen Sie die Berechtigungskonfiguration hinzu
- 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>
- 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 .