Guía de integración del host AOSP

El host de aplicaciones para automóviles del Proyecto de código abierto de Android (AOSP) es una parte de la Biblioteca de aplicaciones para automóviles que utilizan los desarrolladores de terceros (3P) para habilitar aplicaciones para Android para automóviles. App Host es una aplicación de sistema que permite que las aplicaciones de automóviles 3P representen componentes de interfaz de usuario (UI) de estilo OEM en su nombre.

Para ejecutar aplicaciones 3P, tanto la aplicación 3P como el host de aplicaciones automotrices AOSP deben estar instalados:

  • Automotive App Host proporciona aplicaciones 3P con un conjunto de plantillas de interfaz de usuario y componentes optimizados para vehículos, incluidas capacidades como usabilidad y seguridad.
  • Los OEM pueden diseñar estas plantillas y componentes de interfaz de usuario.
  • ¿El resultado? Las aplicaciones 3P están visualmente bien integradas en el sistema de infoentretenimiento del OEM.

Esta página explica cómo generar el AOSP Automotive App Host a partir del proyecto Gradle en la rama ub-automotive y luego cómo integrar el AOSP Automotive App Host en los objetivos de automóviles.

Mira el código

Para ver el código desagregado:

  1. Ejecute 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, consulte Inicializar un cliente de repositorio .

  3. Instala Android Studio .

Crear el APK del host AOSP

  1. Consulte ub-automotive y luego abra el proyecto Gradle en packages/apps/Car/Templates/Host .
  2. Para configurar el proyecto con el SDK de Android, configure el archivo local.properties de su proyecto. Puede encontrar la ruta en Configuración de SDK de Android en Android Studio.
    sdk.dir=${path_to_android_sdk_location}
    
  3. Cree el APK host como un proyecto típico de Gradle. Por ejemplo, ejecute el comando gradle :
    ./gradlew :app:assembleDebug
    

    El archivo APK se encuentra en:

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

Incrustar el host AOSP

  1. Cree un nuevo archivo Android.mk 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. Cambie el nombre de app-debug.apk a AOSPHost.apk y coloque el APK en la misma carpeta que Android.mk .
  3. Agregue el módulo CarAOSPHost a sus objetivos como PRODUCT_PACKAGES :
    PRODUCT_PACKAGES += \
       CarAOSPHost \
    

Agregue la configuración de permisos

  1. Cree un archivo llamado com.android.car.templates.host.xml para 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 su objetivo, agregue el archivo de configuración a sus objetivos:
    PRODUCT_COPY_FILES += \
        <the file root>/com.android.car.templates.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.android.car.templates.host.xml
    

Construye el objetivo

Cuando crea el destino, el host se instala 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
      …

Probar la integración

Para compilar e instalar las muestras, consulte este proyecto de GitHub, car-samples/car_app_library .