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:
- Ejecute el siguiente comando:
repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master repo sync -j4
Para obtener más información sobre cómo trabajar con el código fuente de AOSP, consulte Inicializar un cliente de repositorio .
- Instale Android Studio .
Cree el APK del host AOSP
- Consulte
ub-automotive
y luego abra el proyecto Gradle enpackages/apps/Car/Templates/Host
. - 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}
- 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
- 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)
- Cambie el nombre de
app-debug.apk
aAOSPHost.apk
y coloque el APK en la misma carpeta queAndroid.mk
. - Agregue el módulo
CarAOSPHost
a sus objetivos comoPRODUCT_PACKAGES
:PRODUCT_PACKAGES += \ CarAOSPHost \
Agregue la configuración de permisos
- 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>
- 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 .