Integra l'host AOSP

L'host di app per Android Open Source Project (AOSP) fa parte della raccolta di app per auto utilizzata dagli sviluppatori di terze parti (3P) 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 dei componenti dell'interfaccia utente (UI) in stile OEM per suo conto.

Per eseguire app di terze parti, devono essere installate sia l'app di terze parti sia l'app host per AOSP Automotive:

  • Automotive App Host fornisce alle app di terze parti un insieme di modelli e componenti UI ottimizzati per i veicoli, tra cui 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 integrate visivamente nel sistema di infotainment dell'OEM.

Questa pagina spiega come generare l'host di app per AOSP Automotive dal progetto Gradle nel ramo ub-automotive e poi come integrare l'host di app per AOSP Automotive nei target per auto.

Dai un'occhiata al codice

Per visualizzare il codice separato:

  1. Esegui questo comando:
    repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master
    repo sync -j4
  2. Per saperne di più sull'utilizzo del codice sorgente AOSP, consulta Inizializzare il client Repo.

  3. Installa Android Studio.

Crea l'APK host AOSP

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

  1. Crea un nuovo file Android.mk per includere 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 app-debug.apk in AOSPHost.apk e inserisci l'APK nella stessa cartella di Android.mk.
  3. Aggiungi il modulo CarAOSPHost ai target come PRODUCT_PACKAGES:
    PRODUCT_PACKAGES += \
       CarAOSPHost \

Aggiungere la configurazione delle autorizzazioni

  1. 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>
  2. Nella destinazione, aggiungi il file di configurazione alle destinazioni:
    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 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
      

Testare l'integrazione

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