AOSP ホスト統合ガイド

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 を自動車のターゲットに統合する方法について説明します。

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

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

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

  3. Android Studio をインストールします。

AOSP ホスト APK を作成する

  1. ub-automotive をチェックアウトして、packages/apps/Car/Templates/Host にある Gradle プロジェクトを開きます。
  2. Android SDK を使用してプロジェクトを構成するには、プロジェクトの local.properties ファイルを構成します。Android Studio の [Android SDK Settings] でパスを確認できます。
    sdk.dir=${path_to_android_sdk_location}
    
  3. ホスト APK を通常の Gradle プロジェクトとして作成します。たとえば、次の gradle コマンドを実行します。
    ./gradlew :app:assembleDebug
    

    APK ファイルは次の場所にあります。

    packages/apps/Car/Templates/Host/app/build/outputs/apk/debug/app-debug.apk

AOSP ホストを埋め込む

  1. 新しい 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)
    
  2. app-debug.apk の名前を AOSPHost.apk に変更し、この APK を Android.mk と同じフォルダに配置します。
  3. CarAOSPHost モジュールを PRODUCT_PACKAGES としてターゲットに追加します。
    PRODUCT_PACKAGES += \
       CarAOSPHost \
    

権限の構成を追加する

  1. 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>
    
  2. ターゲットで、この構成ファイルをターゲットに追加します。
    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 をご覧ください。