번들로 묶이지 않은 앱 통합

다이얼러, 미디어, 자동차 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 스튜디오 또는 명령줄을 사용하여 코드를 빌드할 수 있습니다.

Android 스튜디오

Android 스튜디오에서 코드를 빌드하는 방법은 다음과 같습니다.

  1. Android 스튜디오에서 다음 빌드 파일을 가져옵니다.

    packages/apps/Car/libs/aaos-apps-gradle-project/build.gradle
    
  2. Gradle JDK가 버전 11 이상으로 설정되어 있는지 확인합니다.

    버전 11

    그림 1. Android 스튜디오에서 Gradle JDK를 버전 11로 설정합니다.

명령줄

명령줄에서 코드를 빌드하는 방법은 다음과 같습니다.

  1. 다음 방법 중 하나를 사용하여 Android SDK 위치를 설정합니다.

    • packages/apps/Car/libs/aaos-apps-gradle-project/local.properties를 만든 후 포함된 sdk.dir 속성을 설정합니다. Android 스튜디오는 프로젝트를 열 때 이 작업을 자동으로 실행할 수 있습니다. 예를 들어 sdk.dir=/Users/MY-USERNAME/Library/Android/sdk을 사용합니다.

      또는

    • ANDROID_SDK_ROOT 환경 변수를 Android SDK 경로로 설정합니다.

  2. 명령 프롬프트 또는 셸 창을 엽니다.

  3. packages/apps/Car/libs/aaos-apps-gradle-project(으)로 이동합니다.

  4. 다음 명령어를 실행합니다.

    ./gradlew assemble

필요한 최소 API 수준

번들로 묶이지 않은 각 앱은 minSdkVersion 이상의 버전을 가진 Android 플랫폼에서 작동합니다. 다음 표에는 각 앱에서 지원하는 최소 API 버전이 나와 있습니다.

최소 API 수준
Calendar 29
자동차 UI 라이브러리 29
CompanionDevice 29
다이얼러 31
미디어 30
Messenger (SMS) 30
AOSP 호스트 29

시스템 이미지에 사전 빌드 통합

앱에서 Android 플랫폼 버전을 지원하는 경우 (이전 섹션의 표 참고) APK를 시스템 이미지에 추가할 수 있습니다. 그러나 통합 단계는 Android 플랫폼 버전마다 다릅니다.

Android 13 이상

Android 13 이상에는 번들 해제된 앱의 소스 코드가 포함되어 있지 않지만 CDD 규정 준수 테스트 또는 권한이 있는 앱 프로비저닝과 같은 사용 사례를 위해 플랫폼 빌드에 사전 빌드된 APK를 포함할 수 있습니다. APK를 지정하려면 다음 예와 같이 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 12 이하에는 번들 해제된 앱의 소스 코드가 포함되어 있지만 포함할 사전 빌드된 APK를 지정할 수는 있습니다. 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
    }

번들로 묶이지 않은 앱 세부정보

앱/배포 권한이 있고 번들로 묶이지 않은
시스템 서명
권한이 있고 번들로 묶이지 않은
비시스템 서명
번들로 묶이지 않음
시스템 파티션에 있지 않아도 됨
앱 - Calendar X
앱 - CompanionDeviceSupport X
앱 - 다이얼러 X
앱 - AOSP 호스트 X
앱 - 미디어 X
앱 - 메신저(SMS) X
업데이트 배포 OTA OTA 또는 Google Play OTA 또는 Google Play