整合未綁定的應用程式

包含撥號、媒體、Car UI 程式庫和 SMS 的應用程式視為未內含套件的應用程式 (也就是從 Android 平台中未內含套件)。這類應用程式包含從手機隨附應用程式接收資料的邏輯,以及汽車端的使用者體驗,包括關聯和功能註冊設定。使用未內含的程式碼建構的 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_ROOT 環境變數設定為 Android SDK 的路徑。

  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 Song 規則,如以下範例所示:

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
    }

未組合的應用程式詳細資料

應用程式/發行 具有特權的未綁定
系統簽署
特權未內含
非系統簽署
未綁定的
不需要位於系統分割區
應用程式 - 日曆 X
應用程式 - CompanionDeviceSupport X
應用程式 - 撥號程式 X
應用程式 - AOSP 主機 X
應用程式 - 媒體 X
應用程式 - Messenger (簡訊) X
更新發布作業 OTA OTA 或 Google Play OTA 或 Google Play