ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • android froyo source down and build
    Android 2011. 1. 31. 17:57
    명령어를 치기 위한 전제조건
        1. virtualbox에서 ubuntu를 새로 만들때 메모리는 1024, 용량은 20G이상으로 해야한다.
        2. 아래 나오는 명령어들은 한번에 치시길 바랍니다. (한번 쳤었는데 오타나서 다시치는경우 오류가 날 수 있습니다.)
        3. 중간에 숫자가 섞이거나 알파벳이거나 혼동될때가 있습니다. 주의해서 보세요.
        4. 안드로이드 플랫폼 코드 다운로드 및 빌드하는경우 오래걸립니다. 반나절에서 하루는 잡고 진행하세요
        5. 우분투에서 로그인 후 터미널을 들어가서 시작하시면 됩니다.
        6. 터미널에서 명령어 칠때 앞에 #(샵) 표시는 안치셔도 됩니다. 쉘 프롬프트라서 #(샵)이 아니라 $ 표시인 분들도 있으나, 크게 신경안쓰셔도 됩니다.
        7. 질문 혹은 에러사항 저에게 말씀해주세요. 생각나는대로 일단 적어놓긴했는데 부족한 점, 빼놓은 점이 있을 수 있습니다.
        8. 그렇다고 저는 전문가가 아니에요. 하도 설치하다가 일주일 이상을 소비해서 나름 달인이 된 케이스랍니다.
        9. 안드로이드 커널 설치도 있습니다. 맨 아래에 있으니 필요하신분은 하세요
        10. 플랫폼을 설치하면 (init.rc, init.c)파일이 있고, 커널을 설치하면 (main.c)파일이 존재하게 됩니다.
        11. 주요사항입니다. 안드로이드 플랫폼 설치 및 빛드 진행중에 우분투 업데이트를 진행하지 마세요. 속도가 느려질뿐아니라, 다운로드하다 끊기는 현상을 보게 되실겁니다.

    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"로 변경되었다. ...호오 -




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


    # apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
    (필수사항)우분투 설정을 잡아주는 것, 맨 마지막에 zlib1g-dev에 보면 숫자1이 들어가있다 , 조심할것. 설치중에 필요한 명령어들을 인스톨 하는 과정이다. 이거 안하면 중간에 명령어 치는데 우분투에서 인식못한다고 뜬다. 오타안나게 조심할것 !!
    #sudo apt-get install valgrind
    (선택사항)valgrind를 설치한다. 메모리누수, 스택 오버플로우 등을 찾는데 도움이 된다. 필요하다면 설치할것!!
    #sudo apt-get install lib32readline5-dev
    (선택사항) 우분투 8.10버전 사용자는  libreadline 최신버젼이 필요할수도 있기 때문에 설치할것. 8.10버전이 아닌 사용자는 오류메시지가 뜬다. 그것이 정상이다.
    #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
    (필수사항) 자바 JDK를 설치하는 것이다. 자바 1.5버전을 설치한다.
    자바 설치중에 이런거저런거 물어보는데 왠만하면 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버젼에서 해야하기 때문이다.

    #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명령어 오류가 난다면, 맨 위에 가장 처음 명령어를 실행안한것이다.


    #cd ~
    #mkdir mydroid
    #cd mydroid
    #repo init -u git://android.git.kernel.org/platform/manifest.git
    (필수사항들) 안드로이드 플랫폼의 소스배포 정보가 담긴 manifest.git를 내려받는 과정. 시간이 좀 걸리는 과정
    #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비트로 깔아서 에러가 나는거다, 라는 소리입니다.
     이 방법을 해결하기 위해서 고생을 많이 하곤 하는데요, 그렇다고 다시 버추얼박스에서 64비트 우분투 설치하는것은 좋은방법이 아닙니다. 이클립스에서 안드로이드 코딩하기 위해 android sdk를 다운받으려고 해보시면 압니다. 리눅스용 android sdk는 32비트만 제공됩니다.
    저도 저 에러가 여러번 나서 고생 많이 했었는데, 알고보니 가장 맨맨처음 설정잡는 명령어를 안치고 넘어갔거나, 오류가 난 경우입니다.
    build를 하기위한 make명령어까지 많은 명령어들을 치곤 했는데 그중 잘못쳐서 여러번 치거나 빼놓고 쳤거나 하는경우에 발생하는것 같습니다. 좀 억지같지만 처음부터 make까지 한번도 안틀리고 차근차근 올바른 명령어를 쳐야 make가 수월하게 돌아갑니다.
    힘내세요 ㅎㅎ. 원래 설치 수십번해보고 오류나면 전문가가 됩니다 ㅋㅋㅋㅋ시간이 아주 오래걸리니까, 다른거 하셔도 되요

    다 되고나면, 우분투에 안드로이드 플랫폼이 설치가 된것입니다.


    근데, 이건 이거고 또 이클립스 받아서 android sdk도 다운받아 이클립스에서 설정잡고 android sdk설치해주고 하더라구요.
    플랫폼을 설치한거랑 차이는,, 저도 잘 모르겠습니다. 아직 공부ing 라....

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

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




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

    다들, 열공하세요 !!!!

    'Android' 카테고리의 다른 글

    Public API  (0) 2011.07.27
    콘솔에 한글 출력하는 방법  (0) 2011.07.24
    안드로이드의 서비스 분류  (0) 2010.12.20
    repo sync problems – Android Eclair  (0) 2010.11.26
    Activity Life Circle (생명주기)  (1) 2010.08.06
Designed by Tistory.