電話機能、メディア、Car UI ライブラリ、SMS を含むアプリは、バンドルされていないアプリ(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 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 |