El host de apps de Android Open Source Project (AOSP) Automotive forma parte de la biblioteca de apps para vehículos que usan los desarrolladores externos (3P) para habilitar apps para Android Automotive. El host de apps es una app del sistema que permite que las apps para vehículos de 3P rendericen componentes de la interfaz de usuario (IU) con estilo OEM en su nombre.
Para ejecutar apps de 3P, se deben instalar la app de 3P y el host de apps de AOSP Automotive: instalados:
- El host de apps de Automotive proporciona a las apps de 3P un conjunto de plantillas y componentes de IU optimizados para vehículos, incluidas funciones como la usabilidad y la seguridad.
- Los OEMs pueden diseñar estas plantillas y componentes de IU.
- ¿El resultado? Las apps de 3P 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 AOSP Automotive desde el proyecto de Gradle en la rama ub-automotive y, luego, cómo integrar el host de apps de AOSP Automotive en los destinos de vehículos.
Consulta el código
Para consultar el código no agrupado, haz lo siguiente:
- Ejecuta 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, consulta Inicializa el cliente de Repo.
- Instala Android Studio.
Crea el APK del host de AOSP
- Consulta
ub-automotivey, luego, abre el proyecto de Gradle enpackages/apps/Car/Templates/Host. - Para configurar el proyecto con el SDK de Android, configura el archivo
local.propertiesde tu proyecto. Puedes encontrar la ruta de acceso en Configuración del SDK de Android en Android Studio.sdk.dir=${path_to_android_sdk_location}
- Crea el APK del host como un proyecto de Gradle típico. Por ejemplo, ejecuta el
gradlecomando:./gradlew :app:assembleDebug
El archivo APK se encuentra en:
packages/apps/Car/Templates/Host/app/build/outputs/apk/debug/app-debug.apk
Incorpora el host de AOSP
- Crea un archivo
Android.mknuevo 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)
- Cambia el nombre de
app-debug.apkaAOSPHost.apky coloca el APK en la misma carpeta queAndroid.mk. - Agrega el módulo
CarAOSPHosta tus destinos comoPRODUCT_PACKAGES:PRODUCT_PACKAGES += \ CarAOSPHost \
Agrega la configuración de permisos
- Crea un archivo llamado
com.android.car.templates.host.xmlpara 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 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 las muestras, consulta este proyecto de GitHub, car-samples/car_app_library.