Android 开源项目 (AOSP) Automotive App Host 是汽车应用库的一部分,第三方开发者使用该库来启用 Android Automotive 应用。App Host 是一个系统应用,使第三方汽车应用能够代表其渲染原始设备制造商 (OEM) 样式的界面组件。
如需运行第三方应用,必须同时安装第三方应用和 AOSP Automotive App Host:
- Automotive App Host 为第三方应用提供一套专为车辆优化的界面模板和组件,包括易用性和安全性等功能。
- OEM 可以为这些界面模板和组件设置样式。
- 效果呢?第三方应用可以在视觉上很好地集成到 OEM 的信息娱乐系统中。
本页介绍了如何在 ub-automotive
分支中从 Gradle 项目生成 AOSP Automotive App Host,以及如何将 AOSP Automotive App Host 集成到汽车目标中。
查看代码
如要查看未捆绑的代码,请执行以下操作:
- 运行以下命令:
repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master repo sync -j4
如需详细了解如何使用 AOSP 源代码,请参阅初始化 Repo 客户端。
- 安装 Android Studio。
创建 AOSP 主机 APK
- 检出
ub-automotive
分支,然后打开packages/apps/Car/Templates/Host
下的 Gradle 项目。 - 如要使用 Android SDK 配置项目,请配置项目的
local.properties
文件。您可以在 Android Studio 中的 Android SDK 设置下找到此路径。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。