Guía de integración del host de AOSP

El Automotive App Host del Proyecto de código abierto de Android (AOSP) forma parte de la biblioteca de la app para vehículos que usan los desarrolladores externos para habilitar apps para Android Automotive. El host de apps es una app del sistema que permite que las apps para vehículos de terceros rendericen componentes de interfaz de usuario (IU) con diseño de OEM en su nombre.

Para ejecutar apps de terceros, se deben instalar la app de terceros y el host de apps de Automotive de AOSP:

  • Automotive App Host proporciona a las apps de terceros un conjunto de plantillas y componentes de IU optimizados para vehículos, incluidas funciones como usabilidad y seguridad.
  • Los OEMs pueden aplicar diseño a estas plantillas y componentes de la IU.
  • ¿Cuál es el resultado? Las apps de terceros están bien integradas visualmente en el sistema de infoentretenimiento del OEM.

En esta página, se explica cómo generar el host de apps de Automotive del AOSP desde el proyecto de Gradle en la rama ub-automotive y, luego, cómo integrar el host de apps de Automotive del AOSP en los destinos para vehículos.

Consulta el código

Para consultar el código sin agrupar, haz lo siguiente:

  1. Ejecuta el siguiente comando:
    repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master
    repo sync -j4
  2. Para obtener más información sobre cómo trabajar con el código fuente de AOSP, consulta Cómo inicializar un cliente de Repo.

  3. Instala Android Studio.

Crea el APK del host de AOSP

  1. Revisa ub-automotive y, luego, abre el proyecto de Gradle en packages/apps/Car/Templates/Host.
  2. Para configurar el proyecto con el SDK de Android, configura el archivo local.properties de tu proyecto. Puedes encontrar la ruta de acceso en la configuración del SDK de Android en Android Studio.
    sdk.dir=${path_to_android_sdk_location}
  3. Crea el APK host como un proyecto de Gradle típico. Por ejemplo, ejecuta el comando gradle:
    ./gradlew :app:assembleDebug

    El archivo APK se encuentra en la siguiente ubicación:

    packages/apps/Car/Templates/Host/app/build/outputs/apk/debug/app-debug.apk

Cómo incorporar el host de AOSP

  1. Crea un archivo Android.mk nuevo para incluir el siguiente contenido:
    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. Cambia el nombre de app-debug.apk a AOSPHost.apk y coloca el APK en la misma carpeta que Android.mk.
  3. Agrega el módulo CarAOSPHost a tus destinos como PRODUCT_PACKAGES:
    PRODUCT_PACKAGES += \
       CarAOSPHost \

Agrega la configuración de permisos

  1. Crea un archivo llamado com.android.car.templates.host.xml que contenga lo siguiente:
    <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. En tu destino, agrega el archivo de configuración a tus destinos:
    PRODUCT_COPY_FILES += \
        <the file root>/com.android.car.templates.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.android.car.templates.host.xml

Compila el destino

Cuando compilas el destino, se instala el host y se otorga el permiso:

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

Prueba la integración

Para compilar e instalar los ejemplos, consulta este proyecto de GitHub, car-samples/car_app_library.