Интегрируйте хост AOSP.

Android Open Source Project (AOSP) Automotive App Host — это часть библиотеки автомобильных приложений, используемая сторонними разработчиками для обеспечения работы приложений под Android Automotive. App Host — это системное приложение, которое позволяет сторонним автомобильным приложениям отображать компоненты пользовательского интерфейса (UI) в стиле OEM-производителя.

Для запуска сторонних приложений необходимо установить как само стороннее приложение, так и AOSP Automotive App Host:

  • Automotive App Host предоставляет сторонним приложениям набор шаблонов пользовательского интерфейса и компонентов, оптимизированных для транспортных средств, включая такие возможности, как удобство использования и безопасность.
  • Производители оборудования могут настраивать внешний вид этих шаблонов и компонентов пользовательского интерфейса.
  • Результат? Приложения сторонних разработчиков визуально хорошо интегрированы в информационно-развлекательную систему производителя.

На этой странице объясняется, как сгенерировать AOSP Automotive App Host из проекта Gradle в ветке ub-automotive , а затем как интегрировать AOSP Automotive App Host в целевые объекты car.

Посмотрите код

Чтобы посмотреть неотредактированный код:

  1. Выполните следующую команду:
    repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master
    repo sync -j4
  2. Чтобы узнать больше о работе с исходным кодом AOSP, см. раздел «Инициализация клиента репозитория» .

  3. Установите Android Studio .

Создайте APK-файл хоста AOSP.

  1. Загрузите ub-automotive , а затем откройте проект Gradle в папке packages/apps/Car/Templates/Host .
  2. Для настройки проекта с использованием Android SDK необходимо настроить файл local.properties вашего проекта. Путь к нему можно найти в разделе «Настройки Android SDK» в Android Studio.
    sdk.dir=${path_to_android_sdk_location}
  3. Создайте APK-файл хоста как обычный проект Gradle. Например, выполните команду gradle :
    ./gradlew :app:assembleDebug

    APK-файл находится в:

    packages/apps/Car/Templates/Host/app/build/outputs/apk/debug/app-debug.apk

Встройте хост AOSP

  1. Создайте новый файл Android.mk , содержащий следующее содержимое:
    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. Переименуйте файл app-debug.apk в AOSPHost.apk и поместите APK-файл в ту же папку, что и Android.mk .
  3. Добавьте модуль CarAOSPHost в список целевых объектов в качестве PRODUCT_PACKAGES :
    PRODUCT_PACKAGES += \
       CarAOSPHost \

Добавьте конфигурацию прав доступа.

  1. Создайте файл с именем com.android.car.templates.host.xml , содержащий следующее:
    <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. В целевом объекте добавьте конфигурационный файл:
    PRODUCT_COPY_FILES += \
        <the file root>/com.android.car.templates.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.android.car.templates.host.xml

Создайте цель

При сборке целевого объекта устанавливается хост и предоставляются необходимые разрешения:

      
      android.car.permission.CAR_NAVIGATION_MANAGER: granted=true
      android.car.permission.CAR_DISPLAY_IN_CLUSTER: granted=true
      android.car.permission.TEMPLATE_RENDERER: granted=true
      

Проверьте интеграцию

Чтобы собрать и установить примеры, см. этот проект на GitHub: car-samples/car_app_library .