명령어를 치기 위한 전제조건
    1. virtualbox에서 ubuntu를 새로 만들때 메모리는 1500MB, 용량은 20G이상으로 해야한다.
    2. 아래 나오는 명령어들은 한번에 치시길 바랍니다. (한번 쳤었는데 오타나서 다시치는경우 오류가 날 수 있습니다.)
    3. 중간에 숫자가 섞이거나 알파벳이거나 혼동될때가 있습니다. 주의해서 보세요.
    4. 안드로이드 플랫폼 코드 다운로드 및 빌드하는경우 오래걸립니다. 반나절에서 하루는 잡고 진행하세요
    5. 우분투에서 로그인 후 터미널을 들어가서 시작하시면 됩니다.
    6. 터미널에서 명령어 칠때 앞에 #(샵) 표시는 안치셔도 됩니다. 쉘 프롬프트라서 #(샵)이 아니라 $ 표시인 분들도 있으나, 크게 신경안쓰셔도 됩니다.
    7. 질문 혹은 에러사항 저에게 말씀해주세요. 생각나는대로 일단 적어놓긴했는데 부족한 점, 빼놓은 점이 있을 수 있습니다.
    8. 그렇다고 저는 전문가가 아니에요. 하도 설치하다가 일주일 이상을 소비해서 나름 달인이 된 케이스랍니다.
    9. 안드로이드 커널 설치도 있습니다. 맨 아래에 있으니 필요하신분은 하세요
    10. 플랫폼을 설치하면 (init.rc, init.c)파일이 있고, 커널을 설치하면 (main.c)파일이 존재하게 됩니다.
    11. 주요사항입니다. 안드로이드 플랫폼 설치 및 빛드 진행중에 우분투 업데이트를 진행하지 마세요. 속도가 느려질뿐아니라, 다운로드하다 끊기는 현상을 보게 되실겁니다.
    12. 64비트에서 명령어를 추가했습니다. 안드로이드 오픈소스홈페이지에서는 64비트만 설명해놓는걸로 봐서 우분투 32비트인 경우는 명령어들이 되지 않는 것 같습니다. 되도록이면 64Bits로 진행하시는게 에러없이 끝나는 방법입니다.(2011.02.01 추가사항)
   13. Android2.2(Froyo)버전을 원하신다면 Ubuntu 64bits에 java 5로 설치해야합니다.
       Android2.3(Gingerbread)버전을원하신다면 Ubuntu 64bits에 Java 6으로 설치해야합니다.
      이 사항들은 1월중순부터 진저브레드가 릴리즈되면서부터 안드로이드 오픈소스 홈페이지에서 정리된 사항입니다. 프로요에 64비트가 정확한지는 모르지만 더이상 오픈소스홈페이지에서는 우분투 32비트에 대해 설명을 지원하지 않고있으므로 임의로 결정내립니다. 자바설치하는건 아래에 설명되어있으니 초반에 우분투설치시 64Bits(우분투버전은 아무거나 상관없음)로 해주시기 바랍니다.(2011.02.28 추가사항)

참고사이트 : http://source.android.com/source/download.html

====================가끔 올리는 실시간 추가 잡설 =====================================
2011.01.25) 추가사항 :
이 글을 올렸을 당시엔 버추얼박스에다가 우분투 10.04 32bits에서 안드로이드 플랫폼 소스 다운받아서 빌드까지 완성한 상태였는데요. 제가 이번달 22일부터 다시 시도해보니, 안되더라구요. 안드로이드 오픈소스 홈페이지에서도 이거저거 살펴보면서 정석대로 따라해봤는데, 안됩니다.
64비트 에러가 나서 시중에 나와있는(정확히는 안드로이드 펍에 있는) 해결방법. 즉, mk파일들 수정도해봤는데요. 64비트 에러 해결이 안되더군요. 우분투 지워서 제대로 설정잡는등 다시해보기를 4~5차례 반복했습니다.
결국 64비트 우분투로 도전을 해보고있는데요. 64비트는 sudp apt-get install 해서 패키지 설치해주는 설정이 조금 다르답니다.
음,,,, 즉. 32비트 우분투에선 아래 명령어들대로 해도 64비트 에러가 나서 안드로이드 플랫폼 빌드가 되지 않습니다. 안드로이드가 조금 수정이 된걸까요 ;;;

2011.01.26 추가사항) . 제가 가진 버추얼박스(3.2버전)가 문제가 있어서 4.0으로 버전업했더니, 전에 있던 이미지가 안읽히게 되서(패키지도 깔았는데 말이죠 ㅠㅠ). 결국, 다 설정해놓은 이미지 날리고. 새로 우분투 10.04 64비트로 설치했습니다.
환경설정 잡기 위해 안드로이드 오픈소스홈페이지(
http://source.android.com)으로 들어가보니, 어라.
전 에는 우분투 64비트일때만 패키지 설치하는 명령어만 있었는데, 이번엔 프로요랑 진저브레드에 대해서(자바 1.5와 1.6버전별로) 설치해야될 패키지 명령어가 달라졌더라구요. 어제만 해도, 변경없었는데, 오늘 보니까 변경되있었습니다.
아직, 안해봤는데. 이제부터 시도하려구요. 저는 프로요를 설치할까 합니다.
요점 : 오픈소스 홈페이지에서도 수정이 나온걸 보면 안드로이드가 수정이 되긴 한게 분명하군요. 여러가지 시도를 해봐서 나중에 정확하게 되는걸 알아내서 블로그를 통째로 수정 혹은 새로 글 올리도록 하겠습니다.

19:48 현재 - 한참 진행을 하는데 , 난 프로요가 받고싶은거다. 그래서
repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo
라고 뒤에 프로요를 받는 명령어를 진행했는데 중간에 error : revision froyo in manifests not found 이런
에러가 난다.
구글 검색해도 해당 에러를 겪는 사람은 한사람뿐인가보다. 답변에서는 걍 뒤에 옵션을 지우라고 하는데.....

지우고 나면 물론 repo init은 가능하다. 그렇지만 make가 안된다.즉 빌드가 되지 않는다는것.
당 연한 것은, 프로요 윗버전인 진저브레드가 자바 1.6을 지원하기 때문이다. 지금 나는 프로요를 설치하기 위해 자바 1.5를 설치했고 프로요는 자바 1.5에서 돌아가게 만들었고. 현재 자바는 1.6까지 나왔고 .....아, 뭔가 모순.
물론 자바 버전업을 하면 진저브레드 소스를 받을 수 있지만 난 프로요 소스가 보고싶은것.
...음, 일단 프로요가 막힌거 보면, 이클레어도 받지 못할텐데 ... 아 -_-... 안드로이드 소스 버전업하면서 뭐가 꼬이긴 많이 꼬였나 보다.
p.s : 이전에는 자바 설치한 후에 java -version 명령어를 써서 자바 버전을 보면 "1.5.0_19"가 떴는데 오늘 오픈소스 홈페이지에서 바뀐 명령어로 해보니 자바 버전이 "1.5.0_22"로 변경되었다. ...호오 -

2011.02.01) -b옵션을 붙여서 프로요소스를 받는걸 실패했습니다. 그래서 중단중입니다.
-b옵션을 붙이지 않으면 그냥 현재 나온버전까지 다운받게 됩니다. 특별히 필요하지 않다면 옵션을 해도 되고 안해도 된다는 말이죠.


2011.02.02) 갈수록 알록달록해지는군요;; 새롭게 에러가 나는걸 발견할 수 있었습니다.(100% 덧글제공 제보;;;)

no such file or directory: '/root/mydroid/.repo/manifests/.git/HEAD

이 에러를 봐서 git폴더에 헤더가 없는걸로 봐서는 안드로이드에서 버전배포함에 있어서 무언가 수정중인 것 같습니다.

예전에는 repo init이 마냥 에러나고 안됬는데, 이제는 수정중인가봅니다.

2011.02.09 ) 오늘 다시 해보니 2월2일에 해놨던 저 에러는 안나는군요. 그러나 여전히 repo init에서 -b froyo옵션은 안먹힙니다. 

하단에 덧글중에 안드로이드 플랫폼 프로요 소스 다운로드 가능하도록 링크 걸려있습니다. ㅎㅎ
기차세웠다고들 하죠;; 그러므로 100명 미만으로 7일이내 다운받으셔야 합니다. 어제 링크 걸어놨으니 앞으로 6일정도 남았군요.
클릭 계속하시면 다른분들이 다운로드할 기회가 줄어듭니다. 욕심내지 말아요 ~.

그리고 플랫폼 개발환경은 윈도우에서 제공하지 않습니다.(어플개발은 가능합니다). 그러므로 소스 받아도 볼 수 있는 툴은 없는것 같아요. 전체 폴더구조나 소스내용들을 파악하시고 싶은 분들을 위해 잠시동안 다운로드 링크 걸겠습니다.
그리고 총 용량은 1.61GB이므로 시간이 꽤 걸릴수도, 짧을수도있습니다. 그건 다운받으시는 분의 인터넷 상태에 따라다릅니다 ㅎㅎ
 좋은하루되세요 !

====================================본문===============================



#sudo passwd root
루트 패스워드를 지정하는 것이다. 패스워드 지정안한사람은 지정하는것이 좋다. 루트에다가 설치할 것이기 때문에, 루트권한으로 넘어가기 위한 패스워드가 필요하다.
#su root
루트권한으로 넘어가기. 명령어를 치면 아래에 암호를 치는 부분이 나오는데, 아무리 키보드 눌러도 아무것도 안뜨는게 정상. 안나온다고 오류난것이 아니다.


(64Bits인경우 ->)
#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 ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev
(아래 명령어는 하지말것)
#sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev

(필수사항)우분투 설정을 잡아주는 것. 아래명령어는 32비트일때 안드로이드 오픈소스 홈페이지에서 제공되었지만 지금(2011.02.28)은 지원되지 않는다. 혹시나 해서 지우진 않고있다. 명령어 맨 마지막에 zlib1g-dev에 보면 숫자1이 들어가있다 , 조심할것. 설치중에 필요한 명령어들을 인스톨 하는 과정이다. 이거 안하면 중간에 명령어 치는데 우분투에서 인식못한다고 뜬다. 오타안나게 조심할것 !!
#sudo apt-get install valgrind
(선택사항)valgrind를 설치한다. 메모리누수, 스택 오버플로우 등을 찾는데 도움이 된다. 필요하다면 설치할것!!
#sudo apt-get install lib32readline5-dev
(선택사항) 우분투 8.10버전 사용자는  libreadline 최신버젼이 필요할수도 있기 때문에 설치할것. 8.10버전이 아닌 사용자는 오류메시지가 뜬다. 그것이 정상이다.
(64Bits이며 진저브레드(2.3 혹은 최신버전까지) 다운받을경우 아래와 같이 입력하세요)
# sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
# sudo add-apt-repository "deb-src http://archive.canonical.com/ubuntu lucid partner"
(64Bits이며 프로요(2.2)까지 다운받을경우 아래와 같이 입력하세요)
# sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu dapper main multiverse"
# sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu dapper-updates main multiverse"
(아래명령어는 하지마세요)
#sudo add-apt-repository "deb http://us.archive.ubuntu.com/ubuntu/ jaunty multiverse"
#sudo add-apt-repository "deb
http://us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse"
(필수사항)저장소를 추가하는것이다. 주소에 오타나지 않도록 주의할것. 그리고 주소와 jaunty 사이에는 한칸 띕니다. 오타가 나서 여러번 치면 업데이트가 안되고 오류메시지가 뜬다. 추가하는 이유는 우분투에서는 자바1.6만 지원하기때문에 그 하위버전을 사용하기 위한 설정이다.
저장소추가는 우분투 메뉴표시줄에서 [시스템]-[관리]-[시냅틱 패키지 관리자]-[메뉴표시줄의 설정]-[저장소]-[써드파티소프트웨어] 에서 추가 할 수 있다. 이때 추가할때는 url만 넣으면 된다.
아래명령어는 하지말라고되어있는 두줄은 이전 안드로이드 오픈소스홈페이지에서 적혀있던 명령어로써 혹시몰라서 남겨둡니다.
#sudo apt-get update
(필수사항) 패키지 업데이트. 위에 저장소를 추가한 내용을 업데이트 한것이다. 최신버전일경우 업데이트가 진행되지 않을 수 있다.


#sudo apt-get install sun-java5-jdk
(64Bits이며 진저브레드(2.3 혹은 최신버전까지) 다운받을경우 아래와 같이 입력하세요)
# sudo apt-get install sun-java6-jdk
# sudo update-java-alternatives -s java-6-sun
(64Bits이며 프로요(2.2)까지 다운받을경우 아래와 같이 입력하세요)
#
sudo apt-get install sun-java5-jdk
# sudo update-java-alternatives -s java-1.5.0-sun
(필수사항) 자바 JDK를 설치하는 것이다. 자바 1.5버전(혹은 1.6)을 설치한다.
자바 설치중에 이런거저런거 물어보는데 왠만하면 yes해주고, 나면 회색화면이 뜨면서 [-java-jre 설정중입니다] 라고 뜨는데 이때, 키보드 마우스가 원하는대로 안움직일 것이다. 이때는 tab키를 누르면 아래에 [ 확 인] 이라는 글에 빨갛게 활성화가 되는데 그때 엔터를 누르고, 다음에 [ 예 ] 를 눌러서 다음설치화면으로 넘어가자
#sudo update-java-alternatives -l
(선택사항) 설치된 자바 버젼들을 모두 확인하기(맨 끝에는 알파벳 소문자 L 입니다)
#sudo update-java-alternatives -s java-1.5.0-sun
(선택사항) 설치된 자바버젼들이 여러개일경우 자바 1.5버전으로 변경하기
#java -version
(필수사항)설치된 자바버전을 보는 명령어다. 자바버젼이 "1.5.0_19" 로 나오면 정상
왜 자바 1.5버젼을 하냐면 안드로이드 플랫폼을 빌드하기 위해선 자바 1.5버젼에서 해야하기 때문이다.
 + 추가) 64비트이면서 프로요를 다운받는사람들은 자바 버전 확인해보면 자바버전이 "1.5.0_22"로 뜹니다.

#cd ~/
(선택사항) 혹시라도, 루트계정이 아닌곳에서 실행하시는 분들을 위한 루트계정으로 이동하는 명령어.
루트계정에 .bashrc 파일이 존재하기 때문이다.
#sudo gedit .bashrc
(필수사항) 환경변수를 잡아주는것이다. 위 명령어를 치면 메모장같은 프로그램이 열리면서 .bashrc 파일내용들이 보일것이다.
아무것도 건들지 말고, bashrc파일의 맨 아래에 있는 fi 밑에 3줄의 환경변수를 써주면 된다.

export JAVA_HOME=/usr/bin/java
export ANDROID_JAVA_HOME=$JAVA_HOME
export PATH=$JAVA_HOME/bin:$PATH

위 세줄을 써놓고 저장 후 닫으면 환경변수가 저장된다.
#source .bashrc
(필수사항) 환경변수 잡은걸 인식시키는(?) 명령어다. 이를 안하면 환경변수가 안잡혀 혼동할 수 있다.
#echo $JAVA_HOME
(선 택사항) JAVA_HOME환경변수가 제대로 잡혔나 확인하는 명령어다. source .bashrc 명령어를 안하면 echo명령어의 응답이 없을 수 있다. 위 명령어를 했을때 명령어 아랫줄에/usr/bin/java라고 나오면 제대로 환경변수가 잡힌것.




#cd ~
#mkdir bin
#export PATH=$PATH:~/bin
#curl
http://android.git.kernel.org/repo >~/bin/repo
#chmod a+x ~/bin/repo
(필 수사항들) 안드로이드의 방대한 소스를 git라는 소스버젼관리 도구를 이용해 관리하는데 이를 배포되는 하나의 버전으로 만드는 작업을 repo스크립트를 이용해 손쉽게 bin폴더에 다운로드 하는 과정이다. 다운로드할때는 curl유틸리티를 이용한다.
curl명령어 오류가 난다면, 맨 위에 가장 처음 명령어를 실행안한것이다.
※ 혹시 repo sync하다가 에러났거나,  재부팅을 했거나, 새로운 터미널 창을 실행했을경우 위 명령어중에 export PATH=~~부터 실행하시기 바랍니다. 레포부터 다시 잡아줘야 하기 때문입니다. 그런후 아래 명령어를 진행하시면 수월하게 진행됩니다.




#cd ~
#mkdir mydroid
#cd mydroid

(현재까지 릴리즈된 안드로이드 전체 버전을 받고싶다면 아래와같이 입력하세요.)
#repo init -u git://android.git.kernel.org/platform/manifest.git

(현재까지 릴리즈된 프로요(Froyo) 버전을 받고싶다면 아래와같이 입력하세요.)
#repo init -u git://android.git.kernel.org/platform/manifest.git -b android2.2.1_r1

(현재까지 릴리즈된 진저브레드(GingerBread) 전체 버전을 받고싶다면 아래와같이 입력하세요.)
#repo init -u git://android.git.kernel.org/platform/manifest.git -b gingerbread
(필수사항들) 안드로이드 플랫폼의 소스배포 정보가 담긴 manifest.git를 내려받는 과정. 시간이 좀 걸리는 과정
+ 추가) repo init을 총 세개를 적어놨으나 그 중에 하나만 하셔야 합니다 ^^. 원하는 버전으로 하신후에 repo sync로 넘어가세요 !!

그리고 현재 프로요는 원래 -b froyo라고 쓰면 되는데 한달전부터 안되더군요. 그래서 직접 릴리즈버전을 적으면 다운로드 된다고 합니다. ㅎㅎ 알아본결과 현재 2.2.1_r2까지 릴리즈 됬더라구요. 가장 최신버전이지만 그대로적으면 오류가난다는 댓글정보로인해 2.2.1_r1으로수정합니다. 최근허니컴과 안드로이드2.3.3이 추가되었는데 그 관련사항은 알아내는대로 수정하겠습니다.(2011.02.28 작성)
-----------------------------오류해결안-------------------------------------

Hy054nz2011/02/14 15:39

no such file or directory: '/root/mydroid/.repo/manifests/.git/HEAD
이 에러 나는분들은 repo init 때리는 디렉토리에 보면 숨김디렉토리로 .repo 디렉토리가 있는데 이거 날리고 하시면 됩니다.
(rm -rf .repo)
.repo는 git관련 정보들을 저장하는 디렉토리이고, repo init할때 생성되고 repo sync등에서 관리될때 필요한 디렉토리입니다.
즉 repo init 하면 새로 생성된다는 말이죠.....

---------------------------------------------------------------------------
Hy054nz님의 댓글이 있지만 댓글들이 너무많고 길어서 넘어가시는분들이 있을까봐 본문으로 옮겨봅니다. 음...허락없이 옮겼지만 제 블로그에 달린 댓글이라.................괜찮을까요? ...(긴가민가..).
많 으분들이 해당에러로 고생하실까봐 본문으로 옮깁니다 !!. repo init 수행을 mydroid폴더로 하니까 mydroid안에 들어가서 .repo폴더를 지우시길 바래요. 임의로 폴더명하신분은 그 폴더명으로 가셔서 지운후 다시 명령어 치시면 됩니다.


#repo sync
(필 수사항) 안드로이드 플랫폼의 소스코드를 다운로드 하는 과정. 시간 엄청 오래걸린다, 초기 우분투 메모리 잡은 내용마다 다르겠지만, 버추얼박스에서 메모리 1024MB로 잡아도 2~3시간은 걸린것 같다. 인터넷을 통해 다운로드를 진행하는 과정이기때문에 인터넷 속도도 다운로드 받는 시간에 영향을 끼친다. 중간에 인터넷 끊기거나 상태 메롱인 경우엔 다시 repo sync하는게 좋다.
나도 이때문에 고생 쩔었다. ㅠㅠ흑흑, 왜 이너넷이 끊기는거야 중간에 ㅠㅠ
#cd ~/mydroid
#make
(필수사항들) repo sync도 오래걸렸는데 이건 더 오래걸린다. 다운받은 안드로이드 플랫폼 소스코드를 빌드하는 과정이다. 이거 해놓고 한참동안 다른짓 해도 아직도 진행중일지도 모른다. 음.,, 힘내세요 >_<

*****repo sync나 make과정중에 오류가 생긴다거나 퍼센테이지가 멈춰서 안움직이는 경우는, 대부분 실패한 경우입니다.
퍼센테이지가 멈춰서 안움직일땐 옆에 다운받은 갯수나, 다운받는 속도등을 봐서 인터넷상태를 먼저 체크하세요. 아니면 컴터가 처리할 용량을 넘었을 수도 있어요.
그리고 특히 make과정중에

You are attempting to build on a 32-bit system
Only 64-bit build environments are supported beyond froyo/2.2.
위와 같은 에러가 발생하는 경우가 있습니다. 이는 안드로이드 2.2버젼인 프로요에서는 64비트환경에서만 지원된다는 그런소리인데, 애당초 ubuntu를 32비트로 깔아서 에러가 나는거다, 라는 소리입니다.

안드로이드펍이나 다른 사이트들을 참조해보면 어느파일을 수정하면된다고 하지만, 그래도 실행해보면 에러가 여전히 납니다.
초 반에 전제조건 13번에서 설명드렸다시피 초반부터 64비트 우분투를 설치하시길 권장합니다. 사실 이전에는 32비트를 쓰라고 안드로이드에서 이야기하다가 최근에 64비트를 기준으로 한 명령어만 제공되는걸로 보아서 64비트환경이 적합한 환경이라고 생각합니다. 여기까지 오셔서 저 에러를 발견하신분들께 죄송하지만, 64비트에서 플랫폼설치를 다시 시작해주십시오.(2011.02.28 수정사항)

==============================================================================================================
안드로이드 플랫폼을 설치했지만 안드로이드 커널까지 보고싶다면 아래를 따라하세요
안드로이드 플랫폼을 다 설치하신 후에 하시길 바랍니다.

#cd mydroid
#git clone git://android.git.kernel.org/kernel/common.git kernel
(필수사항들) 맨끝에 git 와 kernel사이에 한칸 띄우는겁니다. 이는 mydroid폴더내에 kernel폴더를 생성한 후 안드로이드 kernel을 설치한다는 소리입니다. 시간이 좀 걸립니다.
#cd kernel
(선택사항)다운로드 후 커널 폴더로 이동합니다.
#git branch
(선택사항) 다운받은 안드로이드 커널의 버젼을 확인하실 수 있습니다.


==================================================================================================================

다 들, 열공하세요 !!!! 저는 얼마전 회사 짤려서(경영악화로 인한 구조조정), 앞으로 많이 건들지 않을거 같아서 질문에 답을 못하게 될 것같습니다.. 난이제 실업자 . 흑흑, 졸업식하고 그 다음주에 실직이라니 흑흑, 아직 수습도 안 끝났는데 흑흑, 세상 참 버겁네요.


Posted by 눈누난나야
,