包含撥號、媒體、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 中建構程式碼,請按照下列步驟操作:
在 Android Studio 中匯入下列建構檔案:
packages/apps/Car/libs/aaos-apps-gradle-project/build.gradle
確認 Gradle JDK 已設為 11 以上版本:
圖 1. 在 Android Studio 中將 Gradle JDK 設為 11 版。
指令列
如何透過指令列建構程式碼:
請使用下列任一方法設定 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 的路徑。
開啟命令提示字元或殼層視窗。
前往
packages/apps/Car/libs/aaos-apps-gradle-project
。執行下列指令:
./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 |