AOSP 主機集成指南

Android 開源項目 (AOSP) Automotive App Host 是 Car App Library 的一部分,第三方 (3P) 開發人員使用該庫為 Android Automotive 啟用應用程序。 App Host 是一個系統應用程序,它允許 3P 汽車應用程序代表其呈現 OEM 樣式的用戶界面 (UI) 組件。

要運行 3P 應用程序,必須安裝 3P 應用程序和 AOSP 汽車應用程序主機:

  • 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. 安裝安卓工作室

創建 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