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 앱 호스트를 자동차 타겟에 통합하는 방법을 설명합니다.
코드 체크아웃
번들로 묶이지 않은 코드를 체크아웃하려면 다음 안내를 따르세요.
- 다음 명령어를 실행합니다.
repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master repo sync -j4
AOSP 소스 코드로 작업하는 방법에 관한 자세한 내용은 Repo 클라이언트 초기화를 참고하세요.
- Android 스튜디오 설치
AOSP 호스트 APK 만들기
ub-automotive
를 체크아웃한 다음packages/apps/Car/Templates/Host
에서 Gradle 프로젝트를 엽니다.- Android SDK로 프로젝트를 구성하려면 프로젝트의
local.properties
파일을 구성합니다. Android 스튜디오의 Android SDK 설정에서 경로를 확인할 수 있습니다.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를 참고하세요.