Android オープンソース プロジェクト(AOSP)Automotive App Host は、自動車向けアプリ ライブラリの一部で、サードパーティのデベロッパーが Android Automotive でアプリを有効にするために使用します。App Host は、サードパーティの自動車向けアプリが代わりに OEM スタイルのユーザー インターフェース(UI)コンポーネントをレンダリングできるようにするシステムアプリです。
サードパーティ アプリを実行するには、そのアプリと AOSP Automotive App Host の両方をインストールする必要があります。
- Automotive App Host は、車両用に最適化された一連の UI テンプレートおよびコンポーネント(ユーザビリティや安全性に関する機能など)をサードパーティ アプリに提供します。
- OEM は、こうした UI テンプレートおよびコンポーネントのスタイルを設定できます。
- その結果、サードパーティ アプリと OEM のインフォテインメント システムを視覚的にシームレスに統合できます。
このページでは、ub-automotive
ブランチの Gradle プロジェクトから AOSP Automotive App Host を生成する方法と、AOSP Automotive App Host を自動車のターゲットに統合する方法について説明します。
コードをチェックアウトする
バンドルされていないコードをチェックアウトするには:
- 次のコマンドを実行します。
repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master repo sync -j4
AOSP ソースコードの操作について詳しくは、Repo クライアントの初期化をご覧ください。
- Android Studio をインストールします。
AOSP ホスト APK を作成する
ub-automotive
をチェックアウトして、packages/apps/Car/Templates/Host
にある Gradle プロジェクトを開きます。- Android SDK を使用してプロジェクトを構成するには、プロジェクトの
local.properties
ファイルを構成します。Android Studio の [Android SDK Settings] でパスを確認できます。sdk.dir=${path_to_android_sdk_location}
- ホスト APK を通常の Gradle プロジェクトとして作成します。たとえば、次の
gradle
コマンドを実行します。./gradlew :app:assembleDebug
APK ファイルは次の場所にあります。
packages/apps/Car/Templates/Host/app/build/outputs/apk/debug/app-debug.apk
AOSP ホストを埋め込む
- 新しい
Android.mk
ファイルを作成し、次の内容を含めます。LOCAL_PATH := $(my-dir) ################## Start of AOSPHost target ################## include $(CLEAR_VARS) LOCAL_MODULE := CarAOSPHost LOCAL_LICENSE_KINDS := legacy_notice LOCAL_LICENSE_CONDITIONS := notice LOCAL_MODULE_OWNER := google LOCAL_SRC_FILES := AOSPHost.apk LOCAL_MODULE_CLASS := APPS LOCAL_MODULE_TAGS := optional LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX) LOCAL_BUILT_MODULE_STEM := package.apk LOCAL_CERTIFICATE := PRESIGNED LOCAL_PRIVILEGED_MODULE := true LOCAL_PRODUCT_MODULE := true LOCAL_DEX_PREOPT := false include $(BUILD_PREBUILT)
app-debug.apk
の名前をAOSPHost.apk
に変更し、この APK をAndroid.mk
と同じフォルダに配置します。CarAOSPHost
モジュールをPRODUCT_PACKAGES
としてターゲットに追加します。PRODUCT_PACKAGES += \ CarAOSPHost \
権限の構成を追加する
com.android.car.templates.host.xml
という名前のファイルを作成し、次の内容を含めます。<permissions> <!-- Rename the package to com.android.car.templates.host --> <privapp-permissions package="com.android.car.templates.host"> <!-- To be able to display activities in the cluster --> <permission name="android.car.permission.CAR_DISPLAY_IN_CLUSTER" /> <!-- To be able to show navigation state (turn by turn directions) in the cluster.--> <permission name="android.car.permission.CAR_NAVIGATION_MANAGER" /> <!-- To be considered a system-approved host --> <permission name="android.car.permission.TEMPLATE_RENDERER" /> </privapp-permissions> <!-- Declare support for templated applications. --> <feature name="android.software.car.templates_host" /> </permissions>
- ターゲットで、この構成ファイルをターゲットに追加します。
PRODUCT_COPY_FILES += \ <the file root>/com.android.car.templates.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.android.car.templates.host.xml
ターゲットをビルドする
ターゲットをビルドすると、ホストがインストールされ、権限が付与されます。
… android.car.permission.CAR_NAVIGATION_MANAGER: granted=true android.car.permission.CAR_DISPLAY_IN_CLUSTER: granted=true android.car.permission.TEMPLATE_RENDERER: granted=true …
統合をテストする
サンプルをビルドしてインストールするには、GitHub プロジェクトの car-samples/car_app_library をご覧ください。