다운로드, 빌드, 실행

이 페이지에서는 Cuttlefish에서 AAOS SDV를 다운로드, 빌드, 실행하는 방법을 설명합니다.

Repo 클라이언트 초기화

클라이언트를 설정하여 Android 소스 저장소에 액세스하려면 다음을 실행하세요.

  1. sdv와 같은 작업 디렉터리를 만들고 이동합니다.

    mkdir WORKING_DIRECTORY
    cd WORKING_DIRECTORY
  2. 소스 제어를 위해 다음과 같이 작업 디렉터리를 초기화합니다.

    이 예에서는 26Q2-fs-release 브랜치를 사용합니다.

    RELEASE=26Q2-fs-release
    repo init -u https://partner-android.googlesource.com/platform/vendor/pdk/generic/fs/manifest/ -b $RELEASE

    -u 옵션은 필수이며 매니페스트 파일을 식별합니다. 이 파일은 Android 소스의 다양한 Git 프로젝트가 작업 디렉터리 내에 배치되는 위치를 지정하는 XML 파일입니다. 이 예에서는 매니페스트 파일의 이름이 지정되지 않았으므로 명령어에서는 기본 매니페스트 파일(default.xml)을 사용합니다.

    -b 옵션은 초기화하는 브랜치를 식별합니다.

    출력에는 다음 메시지가 포함됩니다.

    repo has been initialized in path_to_working_directory

AAOS SDV 소스 다운로드

다음 명령어를 실행하여 Android 소스 트리를 작업 디렉터리로 다운로드하세요.

repo sync -c -j8

-c 인수는 서버에서 현재 매니페스트 브랜치를 가져오도록 Repo에 지시합니다. -j8 명령어는 신속한 완료를 위해 스레드 간에 동기화를 분할합니다.

빌드 환경 설정

작업 디렉터리 내에서 envsetup.sh 스크립트를 제공하여 빌드 환경을 설정합니다.

source build/envsetup.sh

이 스크립트는 이 페이지에서 사용된 명령어를 비롯하여 Android 소스 코드를 사용할 수 있도록 하는 여러 명령어를 가져옵니다. 스크립트의 소스를 보려면 platform/build/envsetup.sh를 참고하세요. 기본 제공 도움말을 보려면 hmm을 입력하세요.

타겟 선택

SDV를 빌드하기 전에 빌드할 타겟 을 식별합니다. 빌드 타겟을 식별하려면 lunch 명령어 뒤에 빌드하려는 타겟을 나타내는 문자열을 사용합니다. 예를 들어 다음 명령어를 사용하여 Cuttlefish 에뮬레이터의 타겟을 빌드합니다.

lunch sdv_core_cf-trunk_staging-userdebug

이 명령어는 빌드할 제품, 출시 구성, 변형을 선택하고 선택사항을 환경에 저장합니다.

SDV의 lunch 타겟은 devices/google/sdv 디렉터리에 있는 별도의 Git 프로젝트에서 제공됩니다. 사용 가능한 타겟에 관한 자세한 설명은 device/google/sdv/README.md를 참고하세요. 주요 Cuttlefish (cf) 타겟은 다음과 같습니다.

  • sdv_core_cf-trunk_staging-userdebug - Cuttlefish(cf)에서 실행되는 AAOS SDV Core (sdv_core)의 이미지를 빌드합니다.
  • sdv_media_cf-trunk_staging-userdebug - virtIO 가상화 미디어 API (sdv_media)가 포함된 AAOS SDV Core의 이미지를 빌드합니다.
  • sdv_media_har_cf-trunk_staging-userdebug - 고가용성 렌더러 (HAR)를 포함하도록 AAOS SDV 미디어 (sdv_media_cf) lunch 타겟을 확장하는 이미지를 빌드합니다. HAR은 부팅 시 자동으로 실행됩니다.
  • sdv_ivi_cf-trunk_staging-userdebug - SDV 게이트웨이 및 자바 샘플 앱이 포함된 차량 내 인포테인먼트 (IVI) 이미지를 빌드합니다.
  • sdv_ivi_cf_ds-trunk_staging-userdebug - AAOS SDV IVI 타겟 (sdv_ivi_cf)을 확장하고 디스플레이 안전의 DriverUI 및 Instrument Cluster 구현을 포함하는 이미지를 빌드합니다.

AAOS SDV 빌드

다음 명령어를 실행하여 타겟을 빌드하세요. 워크스테이션의 사양에 따라 첫 번째 빌드는 30~60분이 걸립니다. 후속 빌드는 시간이 훨씬 적게 걸립니다.

m

빌드의 출력은 $OUT_DIR에 표시됩니다. 다른 타겟을 빌드하면 각 타겟 빌드가 $OUT_DIR에 표시됩니다.

Cuttlefish를 사용하여 빌드 테스트

AAOS SDV를 빌드한 후 Cuttlefish를 사용하여 빌드를 테스트합니다.

  1. 빌드로 Cuttlefish를 시작하려면 다음을 실행하세요.

    cvd create

    Cuttlefish는 빌드된 타겟(sdv_core_cf-trunk_staging-userdebug)을 사용하여 실행됩니다. Cuttlefish가 부팅되면 다음 메시지가 표시됩니다.

    VIRTUAL_DEVICE_BOOT_COMPLETED
    Virtual device booted successfully
  2. adb를 실행하여 Cuttlefish에 연결합니다.

  3. adb devices를 실행하여 빌드가 실행 중인지 확인합니다. 다음과 유사한 결과가 표시됩니다.

    List of devices attached
    0.0.0.0:6520 device
  4. cvd stop을 실행하여 기기를 종료합니다.

다른 빌드로 Cuttlefish의 여러 인스턴스를 실행하려면 Cuttlefish: 다중 테넌시를 참고하세요.

문제 해결

이 섹션에서는 AAOS SDV의 다운로드, 빌드 또는 실행 중에 발생할 수 있는 오류를 해결하는 방법을 설명합니다.

RBE 오류

원격 빌드 실행 (RBE) 오류가 발생하면 .bashrc 또는 .zshrc에서 USE_RBEENABLE_RBE_BOOTSTRAP의 정의를 삭제합니다.

cvd: VM 관리자 crosvm이 이 머신에서 지원되지 않음

Cuttlefish에서 VM 관리자 crosvm이 머신에서 지원되지 않는다고 보고하는 경우 다음 명령어를 실행하여 Cuttlefish를 설치합니다.

sudo apt install cuttlefish-common

cvd를 찾을 수 없음

cvd not found 오류가 표시되면 다음 단계를 따르세요.

  1. 빌드를 다시 설정합니다.
  2. 타겟 선택을 계속합니다.

Cuttlefish 비정상 종료 루프

Cuttlefish가 비정상 종료 루프에 들어가면 다음 단계를 따르세요.

  1. 모든 Cuttlefish 인스턴스를 중지하려면 cvd stop을 실행합니다.
  2. Cuttlefish를 사용하여 빌드를 다시 테스트합니다.