이 페이지에서는 번들되지 않은 앱을 통합하는 방법을 간략하게 설명합니다. 다이얼러, 미디어, 자동차 UI 라이브러리, SMS를 포함하는 앱은 번들되지 않은 앱으로 간주됩니다. 이러한 앱은 Android 플랫폼에서 번들 해제되며 연결 및 기능 등록을 위한 설정을 포함하여 전화 도우미 앱 및 자동차 측 UX에서 데이터를 수신하기 위한 논리를 포함합니다.
번들 해제된 코드로 빌드된 APK는 여러 버전의 플랫폼에서 작동합니다.
코드를 확인해보세요
번들 해제된 코드를 확인하려면:
- 다음을 실행합니다:
repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master repo sync -cq -j4
- AOSP 소스 코드 작업에 대해 자세히 알아보려면 Repo 클라이언트 초기화를 참조하세요.
코드 빌드
안드로이드 스튜디오
Android Studio에서 코드를 빌드하려면 다음 안내를 따르세요.
- Android Studio에서 다음 빌드 파일을 가져옵니다.
packages/apps/Car/libs/aaos-apps-gradle-project/build.gradle
- Android Studio의 Gradle JDK를 버전 11 이상으로 설정하세요.
그림 1. 버전 11. - 원하는 APK를 빌드하세요.
명령줄
명령줄에서 코드를 빌드하려면 다음 안내를 따르세요.
- 다음 두 가지 방법 중 하나로 Android SDK 위치를 설정합니다.
-
packages/apps/Car/libs/aaos-apps-gradle-project/local.properties
생성한 다음 여기에 포함된sdk.dir
속성을 설정합니다. Android Studio에서는 프로젝트를 열 때 이 작업을 자동으로 수행할 수 있습니다. 예를 들어sdk.dir=/Users/MY-USERNAME/Library/Android/sdk
사용하세요.
또는 - Android SDK 경로로
ANDROID_SDK_ROOT
환경 변수를 설정합니다.
-
- 명령 프롬프트 또는 셸 창을 엽니다.
-
packages/apps/Car/libs/aaos-apps-gradle-project
로 이동합니다. - 다음 명령을 실행하십시오:
./gradlew assemble
최소 필수 API 수준
번들로 묶이지 않은 각 앱은 minSdkVersion
이상 버전의 Android 플랫폼에서 작동합니다. 다음 표에는 각 앱에서 지원하는 최소 API 버전이 나열되어 있습니다.
앱 | 최소 API 수준 |
---|---|
달력 | 29 |
자동차 UI 라이브러리 | 29 |
CompanionDevice | 29 |
다이얼러 | 31 |
미디어 | 30 |
SMS | 30 |
AOSP 호스트 | 29 |
시스템 이미지에 사전 빌드 통합
Android 13 이상 이미지
번들 해제된 코드는 Android 13 플랫폼에서 삭제됩니다. 따라서 다음과 같은 경우 플랫폼 빌드에 사전 빌드된 APK를 추가해야 할 수 있습니다.
- CDD 준수 테스트
- 권한 있는 앱 프로비저닝
이는 android_app_import
Soong 규칙을 사용하여 달성됩니다.
android_app_import { name: "CarMediaApp", apk: "CarMediaApp.apk", privileged: true, certificate: "platform", // Media must be signed by the platform required: ["allowed_privapp_com.android.car.media"], }
Android 12 이하
Android 플랫폼 버전이 앱에서 지원되는 한(위 표 참조) APK를 해당 시스템 이미지에 추가할 수 있습니다. 그러나 대부분의 번들되지 않은 앱에는 Android 13보다 낮은 플랫폼에 이전 버전의 소스 코드가 포함되어 있습니다. 기본적으로 Soong은 사전 빌드된 소스 코드보다 소스 코드에 우선순위를 부여합니다. 따라서 android_app_import
규칙 내에서 prefer
플래그를 true
로 설정해야 합니다.
android_app_import { name: "CarDialerApp", apk: "CarDialerApp.apk", privileged: true, presigned: true, // Dialer can have its own signature required: ["allowed_privapp_com.android.car.dialer"], overrides: ["Dialer"], prefer: true, // The prebuilt replaces a source target with the same name, }
번들되지 않은 유형에 따라 나열된 앱
앱 | 번들로 묶이지 않은 특권 | 번들 해제됨 (시스템 파티션에 있을 필요는 없음) | |
---|---|---|---|
시스템 서명됨 | 비시스템 서명됨 | ||
달력 | 엑스 | ||
CompanionDevice | 엑스 | ||
다이얼러 | 엑스 | ||
AOSP 호스트 | 엑스 | ||
미디어 | 엑스 | ||
SMS | 엑스 | ||
업데이트 배포 | 오타 | OTA 또는 구글 플레이 | OTA 또는 구글 플레이 |