バンドルされていないアプリを統合する

電話機能、メディア、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 でコードをビルドするには:

  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 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 のパスを設定します。

  2. コマンド プロンプトまたはシェル ウィンドウを開きます。

  3. packages/apps/Car/libs/aaos-apps-gradle-project に移動します。

  4. 次のコマンドを実行します。

    ./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