電話機能、メディア、Car UI ライブラリ、SMS を含むアプリは、バンドルされていないアプリ(Android プラットフォームから切り離されたアプリ)と見なされます。こうしたアプリは、スマートフォンのコンパニオン アプリや車側の UX からデータを受信するロジック(関連付けや機能登録の設定など)を備えています。バンドルされていないコードからビルドされた APK は、複数のバージョンのプラットフォームで動作します。
コードをチェックアウトする
バンドルされていないコードをチェックアウトするには、次のコマンドを実行します。
repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-masterrepo sync -cq -j4
AOSP ソースコードの操作について詳しくは、Repo クライアントの初期化をご覧ください。
コードをビルドする
コードのビルドは、Android Studio またはコマンドラインから行います。
Android Studio
Android Studio でコードをビルドするには:
Android Studio で、次のビルドファイルをインポートします。
packages/apps/Car/libs/aaos-apps-gradle-project/build.gradleGradle JDK がバージョン 11 以降に設定されていることを確認します。
図 1. Android Studio で Gradle JDK をバージョン 11 以降に設定する。
コマンドライン
コマンドラインからコードをビルドするには:
次のいずれかの方法で、Android SDK Location を設定します。
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 レベル
バンドルされていない各アプリは、minSdkVersion 以降のバージョンの Android プラットフォーム上で動作します。次の表に、各アプリでサポートされている最小 API バージョンを示します。
| アプリ | 最小 API レベル |
|---|---|
| カレンダー | 29 |
| Car UI ライブラリ | 29 |
| コンパニオン デバイス | 29 |
| 電話アプリ | 31 |
| メディア | 30 |
| メッセージ(SMS) | 30 |
| AOSP ホスト | 29 |
システム イメージに事前ビルドを統合する
Android プラットフォーム バージョンがアプリでサポートされている場合(前の節の表を参照)は、そのシステム イメージに APK を追加できます。ただし、統合手順は Android プラットフォーム バージョンによって異なります。
Android 13 以降
Android 13 以降には、バンドルされていないアプリのソースコードは含まれていません。ただし、特定のユースケース(CDD 準拠状況のテスト、特権アプリのプロビジョニングなど)のため、プラットフォーム ビルドにビルド済み APK を含めることは可能です。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 のデフォルトでは、ビルド済み APK よりもソースコードが優先されるため、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 | ||
| アプリ - メッセージ (SMS) | X | ||
| アップデートのディストリビューション | OTA | OTA または Google Play | OTA または Google Play |