如果應用程式包含撥號、媒體、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 中建構程式碼,請按照下列步驟操作:
在 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 的路徑設定
ANDROID_SDK_ROOT
環境變數。
開啟命令提示字元或殼層視窗。
前往
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
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 |