AOSP 主机集成指南

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 集成到车载目标中。

查看代码

要查看解绑的代码

  1. 运行以下命令
    repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master
    repo sync -j4
  2. 要详细了解如何使用 AOSP 源代码,请参阅初始化 Repo 客户端

  3. 安装 Android Studio

创建 AOSP 主机 APK

  1. 检出 ub-automotive,然后打开 packages/apps/Car/Templates/Host 下的 Gradle 项目。
  2. 要使用 Android SDK 配置项目,请配置文件 local.properties。您可以在 Android Studio 的 Android SDK 设置下找到该路径。
    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