整合未綁定的應用程式

如果應用程式包含撥號、媒體、Car UI 程式庫和簡訊,則視為未綁定應用程式 (即與 Android 平台未綁定)。這類應用程式包含從手機隨附應用程式接收資料的邏輯,以及車輛端的 UX,包括關聯和功能註冊設定。從未綁定程式碼建構的 APK 可與多個平台版本搭配使用。

查看程式碼

如要查看未組合的程式碼,請執行下列指令:

repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master
repo sync -cq -j4

如要進一步瞭解如何使用 AOSP 原始碼,請參閱「初始化 Repo 用戶端」。

建構程式碼

您可以使用 Android Studio 或指令列建構程式碼。

Android Studio

如要在 Android Studio 中建構程式碼,請按照下列步驟操作:

  1. 在 Android Studio 中,匯入下列建構檔案:

    packages/apps/Car/libs/aaos-apps-gradle-project/build.gradle
    
  2. 確認 Gradle JDK 已設為 11 以上版本:

    11 版

    圖 1. 在 Android Studio 中將 Gradle JDK 設為 11 版。

指令列

如要透過指令列建構程式碼,請執行下列操作:

  1. 使用下列任一方法設定 Android SDK 位置:

    • 建立 packages/apps/Car/libs/aaos-apps-gradle-project/local.properties,然後設定其中包含的 sdk.dir 屬性。開啟專案時,Android Studio 會自動執行這項操作。例如,使用 sdk.dir=/Users/MY-USERNAME/Library/Android/sdk

    • 使用 Android SDK 的路徑設定 ANDROID_SDK_ROOT 環境變數。

  2. 開啟命令提示字元或殼層視窗。

  3. 前往 packages/apps/Car/libs/aaos-apps-gradle-project

  4. 執行下列指令:

    ./gradlew assemble

最低必要 API 級別

每個未綁定的應用程式都可在 Android 平台上運作,但版本必須等於或高於 minSdkVersion。下表列出各應用程式支援的最低 API 版本:

應用程式 最低 API 級別
日曆 29
Car UI 程式庫 29
CompanionDevice 29
Dialer 31
媒體 30
Messenger (簡訊) 30
Android 開放原始碼計畫主機 29

將預先建構版本整合到系統映像檔

如果應用程式支援 Android 平台版本 (請參閱上一節的表格),您可以將 APK 新增至系統映像檔。不過,Android 平台版本不同,整合步驟也會有所差異。

Android 13 以上版本

Android 13 以上版本不包含未綁定應用程式的原始碼,但您可以在平台建構中加入預先建構的 APK,用於 CDD 相容性測試或佈建具備特殊權限的應用程式等用途。如要指定 APK,請使用 android_app_import Soong 規則,如下列範例所示:

android_app_import {
    name: "CarMediaApp",
    apk: "CarMediaApp.apk",
    privileged: true,
    certificate: "platform", // Media must be signed by the platform
    required: ["allowed_privapp_com.android.car.media"],
}

Android 12 以下版本

Android 12 以下版本包含未綁定應用程式的原始碼,但您仍可指定要納入的預先建構 APK。由於 Soong 預設會優先處理來源程式碼,而非預先建構的程式碼,因此必須在 android_app_import 規則中將 prefer 標記設為 true,如下列範例所示:

android_app_import {
    name: "CarDialerApp",
    apk: "CarDialerApp.apk",
    privileged: true,
    presigned: true, // Dialer can have its own signature
    required: ["allowed_privapp_com.android.car.dialer"],
    overrides: ["Dialer"],
    prefer: true, // The prebuilt replaces a source target with the same name
    }

未綁定應用程式詳細資料

應用程式/發布 具有特殊權限的未綁定
系統簽署
Privileged unbundled
non-system signed
未綁定
不需要位於系統磁碟分割區
應用程式 - 日曆 X
應用程式 - CompanionDeviceSupport X
應用程式 - 撥號程式 X
應用程式 - Android 開放原始碼計畫主機 X
應用程式 - 媒體 X
應用程式 - 訊息 (簡訊) X
更新發布作業 OTA OTA 或 Google Play OTA 或 Google Play