統合ガイド

この記事では、バンドルされていないアプリを統合する方法について説明します。電話アプリ、メディア、Car UI ライブラリ、SMS を含むアプリは、バンドルされていないアプリと見なされます。これらのアプリは Android プラットフォームにはバンドルされておらず、スマートフォンのコンパニオン アプリや車側の UX からデータを受信するロジック(関連付けや機能登録の設定など)を備えています。

バンドルされていないコードからビルドされた APK は、複数のバージョンのプラットフォームで動作します。

コードをチェックアウトする

バンドルされていないコードをチェックアウトするには:

  1. 以下のコマンドを実行します。
    repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master
    repo sync -cq -j4
    
  2. AOSP ソースコードの操作について詳しくは、Repo クライアントの初期化をご覧ください。

コードをビルドする

Android Studio

Android Studio でコードをビルドするには:

  1. Android Studio で、次のビルドファイルをインポートします。
    packages/apps/Car/libs/aaos-apps-gradle-project/build.gradle
  2. Android Studio の Gradle JDK をバージョン 11 以降に設定します。

    バージョン 11
    図 1. バージョン 11
  3. 必要な APK をビルドします。

コマンドライン

コマンドラインからコードをビルドするには:

  1. Android SDK の場所を、次の 2 つの方法のいずれかで設定します。
    • 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/unbundled-apps-gradle-project にアクセスします。
  4. 次のコマンドを実行します。
    ./gradlew assemble

必要最小限の API レベル

バンドルされていない各アプリは、minSdkVersion 以上のバージョンの Android プラットフォーム上で動作します。次の表に、各アプリでサポートされている最小 API バージョンを示します。

アプリ 最小 API レベル
カレンダー 29
Car UI ライブラリ 29
コンパニオン デバイス 29
電話アプリ 31
メディア 30
SMS 30
AOSP ホスト 29

システム イメージへの事前ビルドの統合

Android 13 以降のイメージ

バンドルされていないコードは Android 13 プラットフォームから削除されます。 そのため、次のような場合は、ビルド済み APK をプラットフォーム ビルドに追加する必要があります。

  • CDD 準拠状況のテスト
  • 特権アプリのプロビジョニング

これを実施するには、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 プラットフォーム バージョンがアプリでサポートされている限り(上の表を参照)、そのシステム イメージに APK を追加できます。ただし、バンドルされていないアプリの大半には、Android 13 より前のプラットフォームに含まれる、以前のソースコード バージョンが含まれます。デフォルトでは、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
コンパニオン デバイス X
電話アプリ X
AOSP ホスト X
メディア X
SMS X
アップデートのディストリビューション OTA OTA または Play ストア OTA または Play ストア