이 페이지의 안내를 따라 Android를 빌드하세요.
빌드 환경 설정
작업 디렉터리 내에서 envsetup.sh
스크립트를 제공하여 빌드 환경을 설정합니다.
source build/envsetup.sh
이 스크립트는 이 페이지에서 사용된 명령어를 비롯하여 Android 소스 코드를 사용할 수 있도록 하는 여러 명령어를 가져옵니다. 스크립트 소스를 보려면 platform/build/envsetup.sh
를 참고하세요.
기본 제공 도움말을 보려면 hmm
을 입력하세요.
타겟 선택
Android를 빌드하려면 빌드 타겟을 식별해야 합니다. 빌드 타겟을 식별하려면 lunch
명령어 뒤에 타겟 제품과 빌드를 식별하는 target을 사용합니다.
lunch aosp_cf_x86_64_phone-trunk_staging-userdebug
현재 타겟 보기
현재 lunch 설정을 보려면 다음을 실행합니다.
$ echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"
타겟을 나타내는 문자열의 형식은 다음과 같습니다.
lunch product_name-release-build_variant
이 문자열의 구성요소는 다음과 같습니다.
product_name은 빌드하려는 제품의 이름입니다(예:
aosp_cf_x86_64_phone
또는aosp_husky
). 특정 product_name은 자체 형식을 따를 수 있지만 Google에서 사용하는 형식에는 다음 구성요소가 포함됩니다.aosp
는 Android 오픈소스 플랫폼을 나타냅니다.- (선택사항)
cf
는 타겟이 Cuttlefish 에뮬레이터 내에서 실행되어야 하면 포함됩니다. - 아키텍처 및 하드웨어(예:
x86_64_phone
또는husky
(Pixel 8 Pro))
release는
trunk-staging
으로 설정됩니다.문자열의 build_variant 부분은 다음 표에 나온 세 값 중 하나일 수 있습니다.
build_variant 설명 user
이 빌드 변형은 제한된 보안 액세스 권한을 제공하고 프로덕션에 적합합니다. userdebug
이 빌드 변형은 기기 개발자가 개발 중인 버전의 성능과 전력을 이해하는 데 도움이 됩니다. userdebug
빌드로 개발할 때는 userdebug 가이드라인을 따르세요.eng 이 빌드 변형은 빌드 시간이 더 빠르고, 성능과 전력을 신경 쓰지 않는 경우 일상적인 개발에 가장 적합합니다.
코드 빌드
다음 명령어를 실행하여 타겟을 빌드하세요. 워크스테이션의 사양에 따라 첫 번째 빌드는 1시간 미만에서 최대 몇 시간까지 걸릴 수 있습니다. 후속 빌드에서는 빌드 시간이 크게 짧아집니다.
$ m
표시되는 첫 번째 출력은 다음과 같이 타겟과 빌드 환경의 개요입니다.
============================================
PLATFORM_VERSION_CODENAME=VanillaIceCream
PLATFORM_VERSION=VanillaIceCream
PRODUCT_INCLUDE_TAGS=com.android.mainline
TARGET_PRODUCT=aosp_arm
TARGET_BUILD_VARIANT=eng
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
TARGET_CPU_VARIANT=generic
HOST_OS=linux
HOST_OS_EXTRA=Linux-6.5.13-1rodete2-amd64-x86_64-Debian-GNU/Linux-rodete
HOST_CROSS_OS=windows
BUILD_ID=AOSP.MAIN
OUT_DIR=out
============================================
m
명령어는 트리 상단에서 빌드되므로 하위 디렉터리 내에서 m
을 실행할 수 있습니다. TOP
환경 변수가 설정되어 있으면 m
명령어가 이를 사용합니다. TOP
이 설정되어 있지 않으면 m
명령어는 현재 디렉터리에서 트리를 조회하여 트리 상단을 찾으려고 합니다.
m
명령어는 -jN
인수를 사용하여 병렬 작업을 처리할 수 있습니다. -j
인수를 제공하지 않으면 빌드 시스템에서 시스템에 가장 적합한 병렬 작업의 수를 자동으로 선택합니다.
m
명령줄에서 모듈 이름을 나열하여 전체 기기 이미지 대신 특정 모듈을 빌드할 수 있습니다. 또한 m
명령어는 goals라는 의사 타겟을 제공합니다. 예를 들어 m nothing
은 아무것도 빌드하지 않지만 빌드 구조를 파싱하고 검증합니다. 유효한 goals 목록을 보려면 m help
를 입력하세요.
빌드 오류 문제 해결(8.0 이하)
AOSP 8 이하를 빌드하고 있다면 Java 버전의 문제가 발생할 때 m
이 중단될 수 있습니다. 예를 들어 다음 메시지가 표시될 수 있습니다.
************************************************************
You are attempting to build with the incorrect version
of java.
Your version is: WRONG_VERSION.
The correct version is: RIGHT_VERSION.
Please follow the machine setup instructions at
https://source.android.com/source/initializing.html
************************************************************
다음은 가능한 원인과 해결 방법입니다.
- AOSP 개발 설정(2.3~8.0) JDK 섹션에 지정된 대로 올바른 JDK를 설치하지 못했습니다.
- 이전에 설치된 다른 JDK가 경로에 표시됩니다. 올바른 JDK를 경로의 맨 앞에 추가하거나 문제가 있는 JDK를 삭제합니다.