출처 : 1차 http://www.kandroid.org/board/board.php?board=androidsource&command=body&no=4
2차 http://samse.tistory.com/tag/%ED%8F%AC%ED%8C%85
안드로이드 전체 소스 코드 빌드 방법
먼저 안드로이드 소스를 빌드하기 위해선 리눅스 ubuntu 환경을 만드는 것이 바람직할 듯 합니다.
구글도 ubuntu 를 추천하고 있기 때문이고, 다른 package 사용하면 리눅스 초보자의 경우 작업이
힘들 수 있을 것으로 보입니다. 가급적 우분투를 사용하시기 바랍니다.
그럼 이제부터, 제가 build한 절차를 os 설치에서 부터 순차적으로 설명드리도록 하겠습니다.
최종적으로 모두 build하기 까지 꽤 많은 시간이 소비되니 충분한 시간을 가지고 빌드하시기 바랍니다.
1. 리눅스 Ubuntu 패키지 설치.
전 참고로 ubuntu-8.04.1 desktop-i386을 사용하였음을 알려드립니다.
- 먼저 아래의 url에서 우분투 iso 이미지를 얻으셔서 리눅스 설치 CD를 만듭니다.
ftp://ftp.daum.net/ubuntu-releases/8.04.1/ubuntu-8.04.1-desktop-i386.iso
- 그 이후 적당한 컴퓨터에 리눅스를 설치합니다.
2. 리눅스가 모두 설치되면 루트 passwd를 일단 설정합니다
$ sudo passwd root
3. 만약 설치된 리눅스 Desktop에서 직접 작업을 원하시지 않는다면 ssh를 설치합니다
저의 경우엔 ssh client를 사용하여 windows에서 접속하여 안드로이드 소스를 빌드하였습니다.
ssh 설치 방법은 다음과 같습니다.
$ sudo apt-get install ssh
4. 안드로이 설치 환경 준비
- 기본적으로 다음과 같은 package를 인스톨하여야 합니다.
$ sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl
$ sudo apt-get install valgrind
- 안드로이드는 Phython 2.4 이상이 요구됩니다.
우분투 8.04.1에는 이미 Phython 2.5가 포함되어 있기 때문에 이 부분은 skip하셔도 됩니다.
- JDK 5.0, Update 12 또는 그 이상이 요구됩니다.
이를 위해선 다음과 같이 설치하시면 됩니다.
$ sudo apt-get install sun-java6-jdk
- Git 1.5.4 또는 그 이상 버전, 그리고 Repo가 요구됩니다.
$ cd ~
$ mkdir bin
vi 로 ~/.bashrc 에 다음과 같이 환경변수를 추가합니다.
$ vi ~/.bashrc
export LANG=c
export PATH=/home/<your_home>/bin:$PATH:.
export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.07
export ANDROID_JAVA_HOME=$JAVA_HOME
환경설정을 반영하기 위해 다시 로그인 하시던가 아니면 터미날을 종료했다 다시 실행하세요.
csh의 경우엔 source ~/.cshrc를 하면 되는데..bash를 잘 모르겠네여.
다음으로 git와 repo를 설치입니다.
$ sudo apt-get install git-core gnupg
$ curl http://android.git.kernel.org/repo >~/bin/repo
$ chmod a+x ~/bin/repo
$ mkdir mydroid
$ cd mydroid
$ repo init -u git://android.git.kernel.org/platform/manifest.git
여기까지 실행하시면, repo initialized in /home/<your_home>/mydroid 란 메시지가 나옵니다.
이렇게 되면 환경설정은 이제 마무리 되었다고 보셔도 됩니다.
5. 안드로이드 소스 얻기
아래과 같이 수행하면 안드로이드 전체 소스를 다운로드 하게 됩니다.
$ repo sync
6. 안드로이드 빌드 하기
$ make
이 과정을 수행하는 동안 zlib.h error가 발생할 수 있습니다.
이 경우에는 아래와 같이 zlibb1g-dev를 설치하시고 계속 make를 수행하면 됩니다.
$ sudo apt-get install zlib1g-dev
$ make
이 과정을 수행하는 동안 -lncurses error가 발생할 수 있습니다.
이 경우에는 아래와 같이 libncurses5-dev를 설치하시고 계속 make를 수행하면 됩니다.
$ sudo apt-get install libncurses5-dev
$ make
7. 결과 확인하기
out 디렉토리에 build된 안드로이드 full package가 위치하게 됩니다.
$ cd out
8. Kernel 별도로 빌드하기
- msm
$ cd ~/mydroid/kernel
$ make msm_defconfig ARCH=arm
$ make ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-
- goldfish
$ cd ~/mydroid/kernel
$ make goldfish_defconfig ARCH=arm
$ make ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-
p.s.
가급적, source.android.com의 절차대로 수행하는 과정에서 빌드해 본 것입니다.
약간의 차이들은 발생되는 문제들을 해결하기 위해 추가한 것입니다.
그리고 시간이 나면 이렇게 build 된 결과물을 직접 target에 올려볼 생각입니다.
그럼 전 이만..
좋은 하루 되세요.
==============================
요약
invain
2008-10-24 13:50 들풀님 요약정리 감사드려요.... 참고차 추가 댓글 드립니다.
안드로이드 전체 Fulle Source는 총 1.6G 정도이므로 네트웍 다운로드시에 시간이 꽤 소요됩니다. 성공적으로 소스가 다운로드 되어지면
bionic ,bootloader ,build ,dalvik , development ,external ,frameworks ,
hardware ,kernel ,packages ,prebuilt ,recovery ,system 으로 구성됩니다.
1) 페도라 사용자는 그럼 어떻하라는건가? Fedora 9(네트웍업데이트지원)를 설치한후에 rpm2cpio , cpio, alias를 적절히 이용하여 배포판패키지체계차이로 인한 불편함을 쉽게 극복할수 있습니다.
2) 우분투사용자는 리눅스 배포판 버젼을 8.04.1을 사용하면 되나요? 현재 우분투의 릴리즈 로드맵은 2008년 10월 31일 8.10 을 릴리즈 하기로 되어 있으니 스스로 결정하셔야 합니다. 즉 8.04.1 설치후 8.10으로 업데이트 하거나, 10월31일 그냥 8.10버젼을 설치하는겁니다... 저처럼 최근 버젼의 사용을 위해 마음이 급하신분은 8.10 베타버젼을 그냥 설치하면 됩니다.
3) 리눅스 개발자에게 필수 인것은 이렇게 기본 개발 셋팅 작업이 되면 윈도우의 고스트(Ghost)처럼 리눅스용 고스트? partimage을 이용하여 백업을 필히한다. 왜냐? 유사시 10분안에(평균) 복구가능하므로 개발의 효율성을 가져다 줄수 있으므로.. Time is Money.. 제경우에는 systemrescue live cd(googling) iso 이미지를 다운로드하여 시디로 구운후에 이 시디를 이용합니다.