O Automotive App Host do Android Open Source Project (AOSP) faz parte da biblioteca de apps para carros usada por desenvolvedores de terceiros (3P) para ativar apps para o Android Automotive. O host de apps é um app do sistema que permite que apps de carros de terceiros renderizem componentes da interface do usuário (IU) com estilo OEM em nome dele.
Para executar apps de terceiros, o app de terceiros e o host de apps automotivos do AOSP precisam ser instalados:
- O Automotive App Host oferece aos apps de terceiros um conjunto de modelos e componentes de interface otimizados para veículos, incluindo recursos como usabilidade e segurança.
- Os OEMs podem estilizar esses modelos e componentes da interface.
- O resultado? Os apps de terceiros são bem integrados visualmente ao sistema de infoentretenimento do OEM.
Esta página explica como gerar o host de app automotivo do AOSP a partir do projeto do Gradle na
filial ub-automotive
e, em seguida, como integrar o host de app automotivo do AOSP a destinos
automotivos.
Conferir o código
Para conferir o código não agrupado:
- Execute este comando:
repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master repo sync -j4
Para saber mais sobre como trabalhar com o código-fonte do AOSP, consulte Inicializar um cliente do Repo.
- Instale o Android Studio.
Criar o APK do host do AOSP
- Confira
ub-automotive
e abra o projeto do Gradle empackages/apps/Car/Templates/Host
. - Para configurar o projeto com o SDK do Android, configure o arquivo
local.properties
do projeto. Você pode encontrar o caminho em "Android SDK Settings" no Android Studio.sdk.dir=${path_to_android_sdk_location}
- Crie o APK host como um projeto típico do Gradle. Por exemplo, execute o comando
gradle
:./gradlew :app:assembleDebug
O arquivo APK está localizado em:
packages/apps/Car/Templates/Host/app/build/outputs/apk/debug/app-debug.apk
Incorporar o host do AOSP
- Crie um novo arquivo
Android.mk
para incluir o seguinte conteúdo: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)
- Renomeie
app-debug.apk
comoAOSPHost.apk
e coloque o APK na mesma pasta queAndroid.mk
. - Adicione o módulo
CarAOSPHost
às suas metas comoPRODUCT_PACKAGES
:PRODUCT_PACKAGES += \ CarAOSPHost \
Adicionar a configuração de permissões
- Crie um arquivo chamado
com.android.car.templates.host.xml
para conter o seguinte:<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>
- No destino, adicione o arquivo de configuração:
PRODUCT_COPY_FILES += \ <the file root>/com.android.car.templates.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.android.car.templates.host.xml
Criar o destino
Quando você cria o destino, o host é instalado e a permissão é concedida:
… android.car.permission.CAR_NAVIGATION_MANAGER: granted=true android.car.permission.CAR_DISPLAY_IN_CLUSTER: granted=true android.car.permission.TEMPLATE_RENDERER: granted=true …
Testar a integração
Para criar e instalar os exemplos, consulte este projeto do GitHub, car-samples/car_app_library.