이지랑드로랑 - 4장. 안드로이드 풀 패키지 소스 접근하기

 

아~ 정말 오랜만에 글을 쓰게 되었습니다.
기다리시는 분들이 많은것으로 알고 있는데 일단 죄송합니다.
정기적으로 포럼에 포스팅을 하고 싶었는데 일 하다 보면 정신을 놓고 이지랑드로랑 강의를 잊게 되죠. 헉!

자! 그래도 기다리신 보람을 얻게 하려면 먼가 오늘도 해야 합니다!


오늘은 안드로이드 풀 소스를 받아보도록 할겁니다.
안드로이드가 소스를 공개하고 있다는 것은 초등학교 나온 학생은... 모르구요, 관심있는 분들은 다 알고 계시죠.
'뭐냐! 일전에 받은 소스는!' '내게 다운로드를 또하라는 것이냐!' 라는 말씀 하시는 분들이 있을 것 같네요.
이전에 받으셨던건 안드로이드 소스가 아니라 안드로이드에 최적화 되어있는 '리눅스 커널' 입니다.
오늘 받은건 정확하게 말하면 Full Source of Android 가 되겠습니다.

 

이제 본격적으로 안드로이드 소스를 받아보도록 하겠습니다.

원문정보: http://source.android.com/download

안드로이드를 빌드하기 위해서는 최초 말씀드렸던 시스템 요구사항을 반드시 충족해야 합니다.

 

OS Ubuntu 8.10 (본 강좌의 기준임)
RAM 2G 이상 (이하에선 안드로이드 빌드가 안됨)
HDD 20GB 이상의 여유공간 (안드로이드 풀 소스 크기가 빌드 완료 후 5GB 정도 됨)

 

안드로이드는 그 본체가 너무 거대하고 다양한 객체들이 붙어있습니다.
그래서 컴파일을 하는데도 간단하게 gcc만 있으면 안됩니다. 그냥 바로 make 하면 큰일납니다.

 

* 요구되는 핵심 패키지들:
o Git 1.5.4 또는 더 좋은 버전의 Git.
o JDK 5.0, 업데이트 12 버전 또는 그 이상버전. Java 6 는 정상지원 안함.
o flex, bison, gperf, libsdl-dev, libesd0-dev, libwxgtk2.6-dev (옵션), build-essential, zip, curl.

 

위 패키지들은 아래와 같은 명령어로 설치합니다.

$ sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev

 

메모리 누수 및 스택 커랩션 넘침을 찾아주는 패키지 설치.

$ sudo apt-get install valgrind

 

8.10 사용자들은 새로운 버전의 라이브러리 설치.

$ sudo apt-get install lib32readline5-dev

 

패키지들이 설치가 되면 기본 준비는 끝난 것 입니다.
그런데 저 패키지들은 32비트 프로세서를 기반으로 하는 우분투에서의 설치 입니다.
요즘 PC들이 좋아지면서 64비트 시스템이 등장했죠!
2GB 램을 사용하는 저에게는 아직도 여분의 램 슬롯을 보며, 언제 업그레이드 할까~ 고민하는데 무자비하게 12GB 램 쓰시는 분도 더러 있습니다.
아무튼 64비트 컴퓨터들은 메모리 구조가 조금 틀립니다.
그래서 컴파일 하기위해서는 패키지를 다르게 받아주셔야 합니다.

 

* 64비트에서 요구되는 주요 패키지:
o Git, JDK, flex와 함께 다른 i386에서 사용되는 패키지들이 요구됩니다.
o JDK 5.0, 업데이트 12 버전 또는 그 이상버전. Java 6 는 정상지원 안함.
o 32비트에 존재하는 크로스 컴파일 환경을 만들어 줍니다.
o X11 개발환경 요구됩니다.

 

위 패키지들은 아래와 같은 명령어로 설치합니다.

$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl sun-java5-jdk zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev

 

우분투 자바머신의 기본을 Sun JavaVM으로 설정합니다.

$ sudo update-java-alternatives -s java-1.5.0-sun

 

X11: 우분투가 기본적으로 사용하지 않는 팩키지 입니다만, 안드로이드 빌드엔 필요합니다. 링크를 걸어줍니다.

$ sudo ln -s /usr/lib32/libX11.so.6 /usr/lib32/libX11.so

 

이렇게 하면 기본적으로 필요한 패키지들은 모두 설치되게 됩니다.
맥에서도 할 수 있다고 합니다만, 전 안할랍니다. 맥이 없어요. ^^;

이제 본격적으로 패키지를 받아보도록 하죠.

안드로이드 소스는 GIT로 버전관리를 하고 있습니다.
GIT는 SVN과 같은 버전관리 매니저인데, 오픈소스라 그런지 이런식으로 멋지게 버전관리를 합니다.
여기서 안드로이드 소스를 받기위해서는 Repo라는 쉘 프로그램이 필요합니다.

아래와 같은 명령으로 Repo 스크립트를 다운로드 합니다.

 

1. 다운로드 받을 디렉토리 생성:

$ cd ~
$ mkdir bin
$ echo $PATH

 

2. Repo 스크립트 다운로드 및 실행권한 부여:

$ curl http://android.git.kernel.org/repo >~/bin/repo
$ chmod a+x ~/bin/repo
$ cp ~/bin/repo /bin/.

 

이제 필요한 패키지가 겨우겨우 준비를 마쳤네요.
이제 아기다리고기다리던 안드로이드를 받아보도록 하죠.

 

3. 안드로이드 소스를 받을 빈 공간을 생성:

$ mkdir mydroid
$ cd mydroid

 

4. Repo 스크립트를 실행해 안드로이드 최신버전 받아내기:

$ repo init -u git://android.git.kernel.org/platform/manifest.git

 

위 방식으로 받으면 안드로이드는 현재 런칭된 제품이 받아집니다.
하지만 최신 버전, 컵케익이니, 도넛이니 하는 것들을 받으려면 -b 옵션을 넣고 버전이름을 넣고 다운로드 하면 됩니다.

$ repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake
$ repo sync

 

자! 빌드가 잘 되면 성공 입니다.
여기서 유의하실 점은 빌드를 하면 매우매우 오래 걸린다는 겁니다.
1~2시간 걸리기도 하구요, 제가 임수정 언니가 광고했던 노트북을 사기 전까지 썼던 셀러론급 노트북에선 3시간도 걸렸습니다.
그러니까 결과가 바로 안나와도 이상한게 아니니까 슬퍼하거나 외로워 하지 마세요.
빌드한 후 바이너리가 포함된 소스는 2GB가 넘어가니, 어쩔수 없는 우리의 운명인 것 입니다.

안드로이드와 안드로메다 간다는 이야기는 뭐, 이런 것들 이겠죠?


오늘은 여기까지 글을 쓰도록 할께요.
한번에 너무 많이 가면 여러분들이 따라하시는데 힘들잖아요. ^^
... 사실 제가 힘들어요. ㅜ.ㅜ

다음 시간에는 안드로이드 소스를 약간씩 바꿔가면서 빌드해보도록 할께요.
기대해 주시구요, 다음 시간에 봐요~
제발~~~