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.
Посмотрите код
Чтобы посмотреть неотредактированный код:
- Выполните следующую команду:
repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master repo sync -j4
Чтобы узнать больше о работе с исходным кодом AOSP, см. раздел «Инициализация клиента репозитория» .
- Установите Android Studio .
Создайте APK-файл хоста AOSP.
- Загрузите
ub-automotive, а затем откройте проект Gradle в папкеpackages/apps/Car/Templates/Host. - Для настройки проекта с использованием Android SDK необходимо настроить файл
local.propertiesвашего проекта. Путь к нему можно найти в разделе «Настройки Android SDK» в Android Studio.sdk.dir=${path_to_android_sdk_location}
- Создайте APK-файл хоста как обычный проект Gradle. Например, выполните команду
gradle:./gradlew :app:assembleDebug
APK-файл находится в:
packages/apps/Car/Templates/Host/app/build/outputs/apk/debug/app-debug.apk
Встройте хост AOSP
- Создайте новый файл
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)
- Переименуйте файл
app-debug.apkвAOSPHost.apkи поместите APK-файл в ту же папку, что иAndroid.mk. - Добавьте модуль
CarAOSPHostв список целевых объектов в качествеPRODUCT_PACKAGES:PRODUCT_PACKAGES += \ CarAOSPHost \
Добавьте конфигурацию прав доступа.
- Создайте файл с именем
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>
- В целевом объекте добавьте конфигурационный файл:
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 .