El host de apps de Automotive del Proyecto de código abierto de Android (AOSP) forma parte de la Biblioteca de apps para vehículos que usan los desarrolladores externos para habilitar apps para Android Automotive. El host de la aplicación es un sistema app que permite que las apps de terceros para vehículos rendericen componentes de la interfaz de usuario (IU) con estilo de OEM en su nombre.
Para ejecutar apps de terceros, tanto la app de terceros como el host de apps de Automotive del AOSP deben cumplir instalada:
- Automotive App Host ofrece a las apps de terceros un conjunto de plantillas y componentes de IU para vehículos, incluidas funciones como usabilidad y seguridad.
- Los OEM pueden definir el estilo de estos componentes y plantillas de IU.
- ¿El resultado? Las aplicaciones de terceros están visualmente bien integradas en el 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
ub-automotive
y, luego, cómo integrar AOSP Automotive App Host en el vehículo
objetivos.
Consulta el código
Para consultar el código sin empaquetar, haz lo siguiente:
- Ejecuta el siguiente comando:
repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master repo sync -j4
Si quieres obtener más información para trabajar con el código fuente del AOSP, consulta lo siguiente: Inicializa un cliente de Repo.
- Instala Android Studio.
Cómo crear el APK del host de AOSP
- Revisa
ub-automotive
y, luego, abre el proyecto de Gradle enpackages/apps/Car/Templates/Host
- Para configurar el proyecto con el SDK de Android, configura la configuración
local.properties
. Puedes encontrar la ruta en Configuración del SDK de Android en Android. a Looker Studio.sdk.dir=${path_to_android_sdk_location}
- Crea el APK host como un proyecto de Gradle típico. Por ejemplo, ejecuta
gradle
. :./gradlew :app:assembleDebug
El archivo APK se encuentra en:
packages/apps/Car/Templates/Host/app/build/outputs/apk/debug/app-debug.apk
Cómo incorporar el host de AOSP
- 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)
- Cambia el nombre de
app-debug.apk
aAOSPHost.apk
y coloca el APK en el misma carpeta queAndroid.mk
. - Agrega el módulo
CarAOSPHost
a tus destinos comoPRODUCT_PACKAGES
:PRODUCT_PACKAGES += \ CarAOSPHost \
Agrega la configuración de permisos
- 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>
- 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
Crea el objetivo
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