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。
