빌드 환경 구축

이 섹션에서는 로컬 작업 환경을 설정하여 Android 소스 파일을 빌드하는 방법을 설명합니다. Linux를 사용해야 합니다. MacOS나 Windows에서는 빌드가 지원되지 않습니다. /usr/bin/python 바이너리의 중요 변경사항에도 유의해야 합니다.

전체 코드 검토 및 코드 업데이트 프로세스에 관한 개요는 패치 처리 과정을 참고하세요.

브랜치 선택

빌드 환경에 관한 일부 요구사항은 컴파일하려는 소스 코드의 버전에 따라 결정됩니다. 사용 가능한 브랜치의 전체 목록을 보려면 빌드 번호를 참조하세요. 최신 소스 코드(master)를 다운로드하여 빌드하도록 선택할 수 있습니다. 이 경우 저장소를 초기화할 때 브랜치 사양을 생략하기만 하면 됩니다.

브랜치를 선택한 후 아래의 적절한 안내에 따라 빌드 환경을 설정하세요.

Linux 빌드 환경 설정

이러한 안내는 master를 포함하여 모든 브랜치에 적용됩니다.

Android 빌드는 Ubuntu LTS(14.04) 및 Debian 테스트에서 주기적으로 테스트됩니다. 다른 배포판에는 필요한 빌드 도구가 있어야 합니다.

master 브랜치를 포함하여 Gingerbread(2.3.x) 이상 버전의 경우 64비트 환경이 필요합니다. 이전 버전은 32비트 시스템에서 컴파일할 수 있습니다.

필수 패키지 설치(Ubuntu 18.04 이상)

Ubuntu 64비트 버전이 필요합니다.

sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

필수 패키지 설치(Ubuntu 14.04)

Ubuntu 64비트 버전이 필요합니다(14.04 권장).

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip

필수 패키지 설치(Ubuntu 12.04)

Ubuntu 12.04를 사용하면 이전 버전의 Android를 빌드할 수 있습니다. master 또는 최근 출시에서는 버전 12.04가 지원되지 않습니다.

sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

필수 패키지 설치(Ubuntu 10.04~11.10)

Ubuntu 10.04~11.10에서의 빌드는 더 이상 지원되지 않지만 AOSP의 이전 버전을 빌드하는 데 유용할 수 있습니다.

sudo apt-get install git gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev mingw32 tofrodos python-markdown libxml2-utils xsltproc

Ubuntu 10.10:

sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so

Ubuntu 11.10:

sudo apt-get install libx11-dev:i386

USB 액세스 구성

기기를 개발용으로 설정하기의 안내에 따라 모든 Android 기기에 관해 커뮤니티가 유지하는 udev 규칙의 기본 세트를 설치합니다.

별도의 출력 디렉터리 사용

기본적으로 각 빌드의 출력은 일치하는 소스 트리의 out/ 하위 디렉터리에 저장됩니다. 이는 OUT_DIR 환경 변수를 내보내서 재정의할 수 있습니다. 예:

export OUT_DIR=out_mytarget

그러면 빌드 출력이 소스 트리의 out_mytarget/ 하위 디렉터리에 저장됩니다. 여러 타겟 빌드에 동일한 소스 트리를 사용할 때는 타겟마다 별도의 OUT_DIR을 사용하는 것이 좋습니다.

여러 저장 기기가 있는 일부 머신에서는 소스 파일과 출력을 별도의 볼륨에 저장할 때 빌드 속도가 더 빨라집니다. 파일 시스템이 손상되면 모든 파일을 다시 생성할 수 있기 때문에 성능을 높이기 위해 출력이 충돌 안정성 대신 속도에 최적화된 파일 시스템에 저장될 수 있습니다.

이를 설정하려면 출력 디렉터리가 저장될 위치를 가리키도록 OUT_DIR_COMMON_BASE 변수를 내보냅니다.

export OUT_DIR_COMMON_BASE=<path-to-your-out-directory>

각 개별 소스 트리의 출력 디렉터리는 소스 트리가 있는 디렉터리를 따라 이름이 지정됩니다. 예를 들어 /source/master1/source/master2 소스 트리가 있고 OUT_DIR_COMMON_BASE/output으로 설정된 경우 출력 디렉터리는 /output/master1/output/master2입니다.

동일한 이름의 디렉터리에 여러 소스 트리가 저장되지 않도록 합니다. 그러지 않으면 소스 트리가 출력 디렉터리를 공유하게 되고 예기치 않은 결과가 발생하게 됩니다. 이 기능은 master 브랜치를 비롯하여 Jelly Bean(4.1) 이상에서만 지원됩니다.

다음: 소스 다운로드

빌드 환경 준비가 끝났습니다. 소스 다운로드하기로 계속 진행합니다.