AOSP 호스트 통합 가이드

Android 오픈소스 프로젝트(AOSP) Automotive 앱 호스트는 서드 파티(3P) 개발자가 Android Automotive용 앱을 사용 설정하기 위해 사용하는 자동차 앱 라이브러리의 일부입니다. 앱 호스트는 3P 자동차 앱이 자신을 대신하여 OEM 스타일의 사용자 인터페이스(UI) 구성요소를 렌더링할 수 있게 해주는 시스템 앱입니다.

3P 앱을 실행하려면 3P 앱과 AOSP Automotive 앱 호스트를 모두 설치해야 합니다.

  • Automotive 앱 호스트는 3P 앱에 사용성 및 안전성과 같은 기능을 포함하여 차량에 최적화된 UI 템플릿 및 구성요소 집합을 제공합니다.
  • OEM은 이러한 UI 템플릿 및 구성요소의 스타일을 지정할 수 있습니다.
  • 그 결과 3P 앱은 OEM의 인포테인먼트 시스템에 시각적으로 잘 통합됩니다.

이 페이지에서는 ub-automotive 브랜치의 Gradle 프로젝트에서 AOSP Automotive 앱 호스트를 생성하는 방법과 AOSP Automotive 앱 호스트를 자동차 타겟에 통합하는 방법을 설명합니다.

코드 체크아웃

번들로 묶이지 않은 코드를 체크아웃하려면 다음 안내를 따르세요.

  1. 다음 명령어를 실행합니다.
    repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master
    repo sync -j4
    
  2. AOSP 소스 코드로 작업하는 방법에 관한 자세한 내용은 Repo 클라이언트 초기화를 참고하세요.

  3. Android 스튜디오 설치

AOSP 호스트 APK 만들기

  1. ub-automotive를 체크아웃한 다음 packages/apps/Car/Templates/Host에서 Gradle 프로젝트를 엽니다.
  2. Android SDK로 프로젝트를 구성하려면 프로젝트의 local.properties 파일을 구성합니다. Android 스튜디오의 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를 참고하세요.