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:
- Führen Sie den folgenden Befehl aus:
repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master 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
local.properties
-Datei Ihres Projekts. Sie finden den Pfad 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 in:
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 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)
- Benennen Sie die
app-debug.apk
inAOSPHost.apk
um und legen Sie die APK im selben Ordner wieAndroid.mk
. - Fügen Sie das Modul
CarAOSPHost
alsPRODUCT_PACKAGES
:PRODUCT_PACKAGES += \ CarAOSPHost \
zu Ihren Zielen hinzu
Fügen Sie die Berechtigungskonfiguration hinzu
- 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>
- 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 .