Guía de integración de host AOSP

El host de aplicaciones automotrices del Proyecto de código abierto de Android (AOSP) es parte de la biblioteca de aplicaciones para automóviles utilizada por desarrolladores externos (3P) para habilitar aplicaciones para Android Automotive. 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, se deben instalar tanto la aplicación 3P como el host de aplicaciones automotrices AOSP:

  • 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 UI.
  • ¿El resultado? Las aplicaciones 3P están visualmente bien integradas en el sistema de información y entretenimiento del OEM.

Esta página explica cómo generar el host de aplicaciones automotrices AOSP a partir del proyecto Gradle en la rama ub-automotive y luego cómo integrar el host de aplicaciones automotrices AOSP en los objetivos del automóvil.

Mira el código

Para consultar 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. Instale Android Studio .

Cree 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 del SDK de Android en Android Studio.
    sdk.dir=${path_to_android_sdk_location}
    
  3. Cree el APK del 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 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 construye 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 los ejemplos, consulte este proyecto de GitHub, car-samples/car_app_library .