Guia de integração de host AOSP

O Android Open Source Project (AOSP) Automotive App Host faz parte da Car App Library usada por desenvolvedores terceirizados (3P) para habilitar aplicativos para Android Automotive. O App Host é um aplicativo de sistema que permite que aplicativos automotivos 3P renderizem componentes de interface de usuário (IU) no estilo OEM em seu nome.

Para executar aplicativos 3P, tanto o aplicativo 3P quanto o AOSP Automotive App Host devem estar instalados:

  • O Automotive App Host fornece aplicativos 3P com um conjunto de modelos de UI e componentes otimizados para veículos, incluindo recursos como usabilidade e segurança.
  • Os OEMs podem estilizar esses modelos e componentes de UI.
  • O resultado? Os aplicativos 3P estão visualmente bem integrados ao sistema de infoentretenimento do OEM.

Esta página explica como gerar o AOSP Automotive App Host a partir do projeto Gradle no ramo ub-automotive e, em seguida, como integrar o AOSP Automotive App Host em destinos de carro.

Confira o código

Para verificar o código desagregado:

  1. Execute o seguinte comando:
    repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master
    repo sync
    -j4
  2. Para saber mais sobre como trabalhar com código-fonte AOSP, consulte Inicializar um cliente Repo .

  3. Instale o Android Studio .

Crie o APK host AOSP

  1. Confira ub-automotive e abra o projeto Gradle em packages/apps/Car/Templates/Host .
  2. Para configurar o projeto com o Android SDK, configure o arquivo local.properties do seu projeto. Você pode encontrar o caminho em Configurações do Android SDK no Android Studio.
    sdk.dir=${path_to_android_sdk_location}
  3. Crie o APK host como um projeto Gradle típico. 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 AOSP

  1. 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)
  2. Renomeie app-debug.apk para AOSPHost.apk e coloque o APK na mesma pasta que Android.mk .
  3. Adicione o módulo CarAOSPHost aos seus destinos como PRODUCT_PACKAGES :
    PRODUCT_PACKAGES += \
       
    CarAOSPHost \

Adicione a configuração de permissões

  1. 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>
  2. No seu destino, adicione o arquivo de configuração aos seus 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

Construa o alvo

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
     

Teste a integração

Para compilar e instalar os exemplos, consulte este projeto GitHub, car-samples/car_app_library .