Android 開放原始碼專案 (AOSP) Automotive App Host 是 Car App Library 的一部分,可供第三方 (3P) 開發人員使用,用於啟用 Android Automotive 應用程式。應用程式主機是系統應用程式,可讓第三方車輛應用程式代為轉譯原始設備製造商 (OEM) 樣式的使用者介面 (UI) 元件。
如要執行第三方應用程式,必須安裝第三方應用程式和 AOSP Automotive App Host:
- Automotive App Host 為第三方應用程式提供一組針對車輛最佳化的 UI 範本和元件,包括可用性和安全性等功能。
- 原始設備製造商 (OEM) 可以為這些 UI 範本和元件設定樣式。
- 結果呢?第三方應用程式在視覺上已妥善整合至原始設備製造商 (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
嵌入 Android 開放原始碼計畫主機
- 建立新的
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。