빌드 환경 구축

이 섹션에서는 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)

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

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

필수 패키지 설치(Ubuntu 14.04)

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

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib 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를 빌드할 수 있습니다. 버전 12.04는 master 또는 최신 릴리스에서 지원되지 않습니다.

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 g++-multilib 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 g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc

우분투 10.10:

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

우분투 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) 이상에서만 지원됩니다.

다음: 소스 다운로드

빌드 환경이 좋습니다! 소스 다운로드 를 진행합니다.