Guida all'integrazione host AOSP

Android Open Source Project (AOSP) Automotive App Host fa parte della Car App Library utilizzate da sviluppatori di terze parti per abilitare le app per Android Automotive. App Host è un sistema che consente ad app per auto di terze parti di eseguire il rendering di componenti dell'interfaccia utente (UI) in stile OEM per suo conto.

Per eseguire app di terze parti, sia l'app di terze parti sia l'AOSP Automotive App Host devono essere installato:

  • Automotive App Host fornisce app di terze parti con una serie di modelli e componenti UI ottimizzate per i veicoli, con funzionalità come l'usabilità e la sicurezza.
  • Gli OEM possono applicare uno stile a questi modelli e componenti di UI.
  • Il risultato? Le app di terze parti sono visivamente ben integrate nel il sistema di infotainment del produttore.

Questa pagina spiega come generare l'host di app AOSP Automotive dal progetto Gradle in Ramo ub-automotive e poi come integrare AOSP Automotive App Host nell'auto target.

Controlla il codice

Per controllare il codice non in bundle:

  1. Esegui questo comando:
    repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master
    repo sync -j4
    
  2. Per scoprire di più sull'utilizzo del codice sorgente AOSP, vedi Inizializza un client repository.

  3. Installa Android Studio.

Crea l'APK host AOSP

  1. Dai un'occhiata a ub-automotive e apri il progetto Gradle in packages/apps/Car/Templates/Host.
  2. Per configurare il progetto con l'SDK per Android, configura il token local.properties. Puoi trovare il percorso nelle Impostazioni dell'SDK Android in Android Studio.
    sdk.dir=${path_to_android_sdk_location}
    
  3. Crea l'APK host come un tipico progetto Gradle. Ad esempio, esegui 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

  1. 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)
    
  2. Rinomina il app-debug.apk in AOSPHost.apk e inserisci l'APK nel nella stessa cartella di Android.mk.
  3. Aggiungi il modulo CarAOSPHost ai tuoi target come PRODUCT_PACKAGES:
    PRODUCT_PACKAGES += \
       CarAOSPHost \
    

Aggiungi la configurazione delle autorizzazioni

  1. Crea un file denominato com.android.car.templates.host.xml che contenga 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>
    
  2. 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 la destinazione, l'host viene installato e viene concessa l'autorizzazione:

      …
      android.car.permission.CAR_NAVIGATION_MANAGER: granted=true
      android.car.permission.CAR_DISPLAY_IN_CLUSTER: granted=true
      android.car.permission.TEMPLATE_RENDERER: granted=true
      …

Testare l'integrazione

Per creare e installare gli esempi, consulta questo progetto GitHub, car-samples/car_app_library.