この記事では、バンドルされていないアプリを統合する方法について説明します。電話アプリ、メディア、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 で、次のビルドファイルをインポートします。
packages/apps/Car/libs/aaos-apps-gradle-project/build.gradle
- Android Studio の Gradle JDK をバージョン 11 以降に設定します。
- 必要な APK をビルドします。
コマンドライン
コマンドラインからコードをビルドするには:
- 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 のパスを設定します。
- コマンド プロンプトまたはシェル ウィンドウを開きます。
packages/apps/Car/libs/unbundled-apps-gradle-project
にアクセスします。- 次のコマンドを実行します。
./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 ストア |