Guia de integração de hosts do AOSP

O Android Open Source Project (AOSP) Automotive App Host faz parte da biblioteca Car App. usados por desenvolvedores de terceiros para ativar apps para o Android Automotive. O host de app é um sistema É um app que permite que apps de terceiros para carros renderizem componentes da interface do usuário (interface) com estilo de OEM em nome deles.

Para executar apps de terceiros, o app de terceiros e o AOSP Automotive App Host precisam ser instalado:

  • O Automotive App Host oferece a 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 definir o estilo desses modelos e componentes de interface.
  • O resultado? Os aplicativos de terceiros estão visualmente bem integrados ao sistema de infoentretenimento do OEM.

Esta página explica como gerar o AOSP Automotive App Host pelo projeto Gradle no Ramificação ub-automotive e como integrar o AOSP Automotive App Host ao carro de destino.

Conferir o código

Para conferir o código desagrupado:

  1. Execute este 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 o código-fonte do AOSP, consulte Inicialize um cliente do repo.

  3. Instale o Android Studio.

Criar o APK de host do AOSP

  1. Confira ub-automotive e abra o projeto Gradle em packages/apps/Car/Templates/Host.
  2. Para configurar o projeto com o SDK do Android, configure o local.properties. O caminho pode ser encontrado nas configurações do SDK do Android no Android Estúdio.
    sdk.dir=${path_to_android_sdk_location}
    
  3. Crie o APK host como um projeto comum do Gradle. Por exemplo, execute gradle comando:
    ./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 o app-debug.apk como AOSPHost.apk e coloque o APK no mesma pasta que Android.mk.
  3. Adicione o módulo CarAOSPHost aos destinos como PRODUCT_PACKAGES:
    PRODUCT_PACKAGES += \
       CarAOSPHost \
    

Adicionar 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 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
    

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.