Android 开源项目 (AOSP) Automotive App Host 是 Car App Library 的一部分,第三方 (3P) 开发者使用它来为 Android Automotive 启用应用。App Host 是一个系统应用,允许 3P 车载应用代表其呈现 OEM 样式的用户界面 (UI) 组件。
要运行 3P 应用,必须同时安装 3P 应用和 AOSP Automotive App Host
- Automotive App Host 为 3P 应用提供了一组针对车辆优化的 UI 模板和组件,包括可用性和安全性等功能。
- OEM 可以为这些 UI 模板和组件设置样式。
- 结果是什么? 3P 应用在视觉上与 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。