AOSP ホスト統合ガイド

Android オープンソース プロジェクト (AOSP) Automotive App Host は、Android Automotive 用のアプリを有効にするためにサードパーティ (3P) 開発者によって使用される Car App Library の一部です。アプリ ホストは、3P 車アプリがその代わりに OEM スタイルのユーザー インターフェイス (UI) コンポーネントをレンダリングできるようにするシステム アプリです。

3P アプリを実行するには、3P アプリと AOSP Automotive App Host の両方がインストールされている必要があります。

  • Automotive App Host は、使いやすさや安全性などの機能を含め、車両向けに最適化された UI テンプレートとコンポーネントのセットを備えた 3P アプリを提供します。
  • OEM は、これらの UI テンプレートとコンポーネントのスタイルを設定できます。
  • 結果? 3P アプリは、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 設定で確認できます。
    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を参照してください。