Android: AOSP ROM
Android: AOSP ROM 본문
안드로이드 오픈소스 프로젝트 개발에 사용될 컴퓨터의 최소 요구 하드웨어 스펙은 안드로이드 소스 트리 풀 세트를 빌드한다는 가정 하에:
90GB 하드디스크 저장공간
16GB 램 메모리 + 스왑 메모리
가 갖춰져 있어야하며 운영체제는
64비트 리눅스 운영체제 (Ubuntu 권장)
이 설치되어 있어야 합니다.
컴퓨터가 갖춰진 후 개발을 하려면 우선 개발툴을 다운로드 받고 설치해야 합니다. 설치하게 될 툴들을 요약하자면
Python 2.5 ~ 2.7
GNU Make 3.81 ~ 3.82
JDK 6
Git 1.7 혹은 그보다 최신 버전
입니다.
구글의 공식 AOSP 사이트 (source.android.com) 에서는 JDK 설치를
$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk
로 하라고 하지만 Sun사가 Java를 Oracle사로 넘기면서부터 이 방법이 작동하지 않게 되었습니다.
그래서 오라클 자바 다운로드 페이지에서 다운로드 받아야 합니다.
JDK 설치파일은 bin 파일인데 bin 파일 설치는 아래와 같이 가능합니다.
cd ~/Downloads
chmod 755 jdk-version.bin
. jdk-version.bin
mv JDKfolder ~/
그 다음에는 PATH 설정을 해주어 터미널에서 어디에서나 Java 툴들을 쓸 수 있게 해주어야합니다.
export JAVA_HOME=/usr/local/jdk1.6.0_33
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH="."
JDK의 경우 Java SE 6 버전을 깔지 않으면 AOSP ROM make 파일이 설치를 허용하지 않지만 오라클에서는 자바 버전 관리를 Sun사와 같은 방식으로 하지 않기 때문에 어떤 버전을 깔아도 에러가 뜨게 되어 있습니다.
그래서 build/core/main.mk 파일을 여신 후
# Check for the correct version of java
java_version := $(shell java -version 2>&1 | head -n 1 | grep '[ "]1\.6[\. "$$]')
ifeq ($(strip $(java_version)),)
endif
이와 같이 입력된 부분을 삭제하시면 됩니다.
그게 끝났으면 남은 툴을 sudo apt-get install 명령어를 사용해서 다운로드 후 설치 받으시면 됩니다.
$ sudo apt-get install git-core 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 openjdk-6-jdk 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
참고로 위의 코드를 복사해서 터미널 안에서 붙여넣기 할 때에는 control + shift + v 입니다.
이로써 소스트리를 다운로드 받고 롬을 빌드할 수 있는 개발 환경이 구축되었습니다.
구글은 Repo라는 툴을 사용해서 안드로이드 소스 트리를 배포합니다. 그래서 소스 트리를 다운로드 받으려면 우선 Repo를 설치하고 초기화한 후 값을 설정해주어야합니다.
Repo 설치법은 이와 같습니다:
$ mkdir ~/bin
$ PATH=~/bin:$PATH
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
Repo 초기화 방법은 이와 같습니다:
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
$ repo init -u https://android.googlesource.com/platform/manifest
Repo를 사용하여 파일들을 다운로드 받는 방법은 이와 같습니다:
$ repo sync
소스 트리를 다운로드 받았다면 이제 ROM을 빌드하기만 하면 됩니다.
ROM 초기화 방법은 이와 같습니다:
$ source build/envsetup.sh
or
$ . build/envsetup.sh
그리고는 빌드 타겟을 정할 수 있는 데 타겟 지정 방법과 지정할 수 있는 타겟들은 이와 같습니다:
$ lunch full-eng
Build name Device Notes full emulator fully configured with all languages, apps, input methods full_maguro maguro full
build running on Galaxy Nexus GSM/HSPA+ ("maguro")full_panda panda full
build running on PandaBoard ("panda")
Buildtype | Use |
---|---|
user | limited access; suited for production |
userdebug | like "user" but with root access and debuggability; preferred for debugging |
eng | development configuration with additional debugging tools |
그리고는 빌드만 하면 됩니다! 빌드 시에는 make 뒤에 -j 옵션을 붙일 수 있는데 이는 컴퓨터에게 주어진 스레드 중 컴파일러가 사용할 스레드 수를 지정하는 것입니다. 스레드의 경우 CPU 2개, CPU당 코어 4개, 코어당 스레드 2개라면 make -j16이나 make -j32가 가장 높은 성능을 보여줄 수 있는 것 입니다. 저의 경우는 밑과 같이 씁니다:
$ make -j4