빌드 환경 설정

이 섹션에서는 로컬 작업 환경을 설정하여 Android 소스 파일을 빌드하는 방법을 설명합니다. Linux 또는 macOS를 사용해야 합니다. 현재 Windows에서는 빌드가 지원되지 않습니다.

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

분기 선택

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

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

Linux 빌드 환경 설정

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

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

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

필수 패키지 설치(Ubuntu 14.04)

Ubuntu 64비트 버전이 필요합니다(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 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 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

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

macOS 빌드 환경 설정

기본 설치에서 macOS는 대소문자를 구분하지 않지만 대소문자를 구분하는 파일 시스템에서 실행됩니다. 이 파일 시스템 유형은 Git에서 지원되지 않으며 일부 Git 명령어(예: git status)가 비정상적으로 작동하게 합니다. 따라서 항상 대소문자를 구분하는 파일 시스템의 AOSP 소스 파일을 사용하는 것이 좋습니다. 아래에 설명된 디스크 이미지를 사용하면 상당히 쉽게 실행할 수 있습니다.

적절한 파일 시스템을 사용할 수 있는 경우 최신 macOS 환경에서 master 분기를 간단하게 빌드할 수 있습니다. 이전 분기에는 몇 가지 추가 도구와 SDK가 필요합니다.

대소문자를 구분하는 디스크 이미지 만들기

디스크 이미지를 사용하여 기존 macOS 환경에서 대소문자를 구분하는 파일 시스템을 만들 수 있습니다. 이미지를 만들려면 디스크 유틸리티를 실행하고 새 이미지를 선택합니다. 빌드를 완료하려면 최소 25GB가 필요합니다. 더 많은 공간이 있으면 향후 성장에 대비할 수 있습니다. 희소 이미지를 사용하면 공간을 절약하는 동시에 필요에 따라 성장을 허용할 수 있습니다. 볼륨 형식으로 대소문자 구분, 저널링됨을 선택합니다.

다음 명령을 사용하여 셸에서 파일 시스템을 만들 수도 있습니다.

hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/android.dmg

이렇게 하면 .dmg(또는 .dmg.sparseimage) 파일이 생성되어 마운트되었을 때 Android 개발에 필요한 형식의 드라이브로 작동합니다.

나중에 더 큰 볼륨이 필요하면 다음 명령을 사용하여 희소 이미지의 크기를 조정할 수 있습니다.

hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage

홈 디렉터리에 저장된 android.dmg 디스크 이미지의 경우 ~/.bash_profile에 도우미 기능을 추가할 수 있습니다.

  • mountAndroid를 실행할 때 이미지를 마운트하려면 다음을 따르세요.
    # mount the android file image
    mountAndroid() { hdiutil attach ~/android.dmg -mountpoint /Volumes/android; }
  • umountAndroid를 실행할 때 이미지를 마운트 해제하려면 다음을 따르세요.
    # unmount the android file image
    umountAndroid() { hdiutil detach /Volumes/android; }

android 볼륨을 마운트한 후 그곳에서 모든 작업을 실행합니다. 외부 드라이브와 마찬가지로 꺼낼(마운트 해제) 수 있습니다.

Xcode 및 기타 패키지 설치

  1. Xcode 명령줄 도구를 설치합니다.
    xcode-select --install
    MacOS(10.8 이하) 이전 버전의 경우 Apple 개발자 사이트에서 Xcode를 설치해야 합니다. Apple 개발자로 등록되어 있지 않은 경우 다운로드하려면 Apple ID를 만들어야 합니다.
  2. 패키지 관리를 위해 MacPorts 또는 Homebrew를 설치하세요.
  3. 연결된 디렉터리가 ~/.bash_profile 파일 내에 있는 경로에 있는지 확인합니다.
    1. MacPorts - /opt/local/bin/usr/bin 앞에 표시됩니다.
      export PATH=/opt/local/bin:$PATH
    2. Homebrew - /usr/local/bin:
      export PATH=/usr/local/bin:$PATH
    3. MacPorts의 경우 다음을 실행합니다.
      POSIXLY_CORRECT=1 sudo port install git gnupg
    4. Homebrew의 경우 다음을 실행합니다.
      brew install git gnupg2

    파일 설명자 제한 설정

    macOS에서 동시에 열린 파일 설명자의 기본 제한은 너무 낮으며, 높은 병렬 빌드 프로세스는 이 제한을 초과할 수 있습니다. 한도를 늘리려면 ~/.bash_profile에 다음 줄을 추가합니다.

    # set the number of open files to be 1024
    ulimit -S -n 1024

    다음: 소스 다운로드

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