안녕하세요.


요즘 안드로이드가 정말 많은 조명을 받고 있는데요, 구글이 세계정복을 하려나 봐요. ^^

그래서 저도 안드로이드에 관심을 갖고 접근하고 있는 중인데 안드로이드 소스를 컴파일 하고 EZ 보드에 올려보자~ 하는게 목표!

잘 될까요?

하여간, 저의 긴 여정을 시작하기 위한 첫발로 안드로이드 소스를 전체빌드 하는 과정을 올려보려 합니다.


일단 안드로이드가 무엇일까요?

 

Android is a software stack for mobile devices that includes an operating system, middleware and key applications. The Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language. (Google)

 

구글의 말을 인용하자면 뭐, 저렇습니다.

다들 아시겠지만 안드로이드는 쉘폰에 집어넣기 위해 만들어진 운영체제인데 리눅스를 기반으로 하고 있는 운영체제 입니다.


I002_001_Architecture_Android.jpg

[안드로이드 아키텍처 레이어]

 

일단 기본적인 말은 구글이나 안드로이드 홈페이지 등에서 쉽게 볼수 있으니 얼른 목표인 안드로이드를 다운로드 해보죠!

 

 

1. 개발환경은?

 

먼저 해결해야 할 것이 개발환경을 만드는 것인데요.

많이들 애용하고 계시는 coLinux를 이용해 도전해 봤다가 GG를 치고 안드로이드 측에서 시키는데로!

'Ubuntu 8.04 or Upper' 버전을 사용했습니다.

다행히 전 우분투를 애용하고 있어서 괜찮았는데 없으신 분들은... 설치해야 할 것만 같은 그런 느낌이 마구 듭니다.

나중에 포터블 우분투를 이용하는 방법도 알아보려 하구요... 일단 그건 나중에.

 

우분투가 준비되었다면 apt를 이용해 다음 팩키지들을 다운로드 받아야 합니다.

 

32비트 우분투를 사용한다면 아래와 같이...

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 (메모리 문제를 해결해준다)

# apt-get install lib32readline5-dev (상위 우분투 버전을 사용한다면 설치)

 

64비트 우분투를 사용한다면 아래와 같이...

# 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

# update-java-alternatives -s java-1.5.0-sun

# ln -s /usr/lib32/libX11.so.6 /usr/lib32/libX11.so (X11 패키지가 없는 경우)

 

여기서 주의할 것!!

저는 일단 우분투를 항상 root로 로그인 해놓고 작업 합니다.

사용자 계정으로 로그인 하시는 분들은 sudo를 이용해서 apt-get 을 실행시키시면 되겠습니다.

 

그리고 구글의 공식 입장에 대해 말하자면 Sun-Java6-JDK에 대해서는 공식적으로 지원하지 않는답니다.

그렇다면 공식적으로 지원하는 버전으로 바꾸어야 겠죠?

 

# update-java-alternatives -s java-1.5.0-sun

 

위 명령어로 셋팅해 주시면 되겠습니다.

 

 

2. 안드로이드 소스 다운로드

 

자~ 이제 안드로이드 소스를 다운로드 받아야겠죠?

먼저 curl을 이용해서 repo 스크립트를 다운로드 받도록 합니다.

 

# mkdir ~/bin

# curl http://android.git.kernel.org/repo >~/bin/repo

# chmod 755 ~/bin/repo

# cp ~/bin/repo /bin

 

자~ 이제 repo 가 준비되었습니다.

아, 그리고 내려받을 때 curl 쓰기 귀찮으신 분들은 wget으로 받으셔도 됩니다. ^^

그리고 이제 안드로이드를 받기 위해 폴더를 만들고 버전을 갱신받아보도록 하겠습니다.

 

# mkdir ~/mydroid

# cd ~/mydroid

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

 

이렇게 하면 몇가지 정보를 다운로드 받는 것 처럼 보이고 곧 이어 그대의 이름과 이메일을 물어봅니다.

뭐, 이건 간단하게 자신이 알아서 넣어줍니다.

곧 이어 'Testing colorized ouput' 테스트를 하게 됩니다.

그대의 계정으로 컬러 디스플레이를 가능하게 만들겠소~ 라고 물어보는데 과감히 y 눌러도 문제 없습니다. ^^

 

자~ 이제 마이드로이드 폴더로 잽싸게 이동해서 싱크 작업을 하면 끝입니다!

 

# cd ~/mydroid

# repo sync

 

이렇게만 해주면 이제 알아서 소스가 최신 버전으로 다운로드 되게 됩니다.

소스 용량이 생각보다 엄청나게 큽니다. (1GB 가까이)

이것저것 빌드하고 할 때를 생각하면 경험상 리눅스 용량이 20기가 이상은 있어야 좀 안전하게 작업 할 수 있을 듯 합니다.

용량 미리미리 확보해 주세요. ^^

 

I002_007_Check_Files.jpg 

[안드로이드가 다운로드 되어진 폴더의 모습]

 

 

3. 안드로이드 전체 빌드

 

자! 이제 안드로이드 전체 빌드를 해볼 차례 입니다.

뭐, 고민없이 할 수 있을 것 같습니다.

 

# cd ~/mydroid

# export ANDROID_JAVA_HOME=$JAVA_HOME (자바 경로 안잡힌 분들만)

# make

 

메이크를 하게되면 컴파일이 시작되는데... ... ... 엄~~~~~ 청~~~~~ 오래 걸립니다. ^^

컴파일 하다가 뻗으면 오류 메시지 나오니까 그전까진 꾸욱~ 참고 기다리셔야 합니다.

제 노트북(셀러론 1.5Ghz)으로는 3시간 가량 걸렸고 데스크탑(코어2듀오 2.1Ghz)에선 1시간 반 가량 걸렸습니다.

 

I002_009_make_android.jpg

[전체 빌드가 시작되는 모습]

 

I002_011_Build_Complete.jpg

[빌드가 완료되고 결과물이 산출된게 확인된 순간]

 

야호! 드디어 빌드가 다 되었네요.

~/mydroid/out/target/product/generic 디렉토리에 보면 루트파일시스템, 램디스크, 각종 데이터들이 이미지 파일로 만들어져 있는 것을 확인 할 수 있습니다.

 

...

 

휴우~ 힘들었습니다.

오늘은 여기까지 해본 것을 올려보도록 하겠습니다.

최종 목표인 EZ 보드에 안드로이드 올리기를 하기위해 이제 다음으로 커널 빌드가 기다리고 있는데요.

이 문제는 차차 배워가면서 올려보도록 하겠습니다.

하여간 안드로이드 전체 빌드가 끝났으니까 이제 기본은 해놓았습니다.

앞으로 안드로이드와 조금 더 가까워지는 시간을 갖을 수 있도록 무지막지한 노력을 아끼지 않아야겠네요. ^^

 

아! 그리고 위 과정대로 했는데 안되신 분들은 자신의 우분투가 버전이 8.04 이상인지를 확인해 주세요.

그래도 안된다! 그렇다면 http://source.android.com/download 여기서 문서를 한번 봐주시기 바랍니다.

별일이 없다면 잘 될꺼에요. ^^

 

그럼 모두들 평안들 하세요~