Automotive App Host di Android Open Source Project (AOSP) fa parte della raccolta di app per auto utilizzata dagli sviluppatori di terze parti per attivare le app per Android Automotive. L'app host è un'app di sistema che consente alle app per auto di terze parti di eseguire il rendering per suo conto di componenti dell'interfaccia utente (UI) in stile OEM.
Per eseguire app di terze parti, è necessario installare sia l'app di terze parti sia AOSP Automotive App Host:
- Automotive App Host fornisce alle app di terze parti un insieme di componenti e modelli di UI ottimizzati per i veicoli, incluse funzionalità come usabilità e sicurezza.
- Gli OEM possono applicare uno stile a questi modelli e componenti dell'interfaccia utente.
- Il risultato? Le app di terze parti sono visivamente ben integrate nel sistema di infotainment dell'OEM.
Questa pagina spiega come generare AOSP Automotive App Host dal progetto Gradle nel ramo ub-automotive
e come integrarlo nei target auto.
Controlla il codice
Per controllare il codice non raggruppato:
- Esegui il seguente comando:
repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master repo sync -j4
Per scoprire di più sull'utilizzo del codice sorgente AOSP, consulta Inizializza un client Repo.
- Installa Android Studio.
Crea l'APK host AOSP
- Esegui il check-out di
ub-automotive
e poi apri il progetto Gradle inpackages/apps/Car/Templates/Host
. - Per configurare il progetto con l'SDK Android, configura il file
local.properties
del progetto. Puoi trovare il percorso in Impostazioni SDK Android in Android Studio.sdk.dir=${path_to_android_sdk_location}
- Crea l'APK host come un normale progetto Gradle. Ad esempio, esegui il comando
gradle
:./gradlew :app:assembleDebug
Il file APK si trova in:
packages/apps/Car/Templates/Host/app/build/outputs/apk/debug/app-debug.apk
Incorpora l'host AOSP
- Crea un nuovo file
Android.mk
che includa i seguenti contenuti: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)
- Rinomina
app-debug.apk
inAOSPHost.apk
e inserisci l'APK nella stessa cartella diAndroid.mk
. - Aggiungi il modulo
CarAOSPHost
ai target comePRODUCT_PACKAGES
:PRODUCT_PACKAGES += \ CarAOSPHost \
Aggiungi la configurazione delle autorizzazioni
- Crea un file denominato
com.android.car.templates.host.xml
contenente quanto segue:<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>
- Nel target, aggiungi il file di configurazione ai target:
PRODUCT_COPY_FILES += \ <the file root>/com.android.car.templates.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.android.car.templates.host.xml
Crea il target
Quando crei il target, l'host viene installato e l'autorizzazione viene concessa:
… android.car.permission.CAR_NAVIGATION_MANAGER: granted=true android.car.permission.CAR_DISPLAY_IN_CLUSTER: granted=true android.car.permission.TEMPLATE_RENDERER: granted=true …
Testa l'integrazione
Per compilare e installare gli esempi, consulta questo progetto GitHub, car-samples/car_app_library.