안드로이드 앱 개발자를 위한 것은 아닙니다. 앱 개발을 하려면 SDK와 Eclipse만 있어도 충분합니다.
아래의 내용은 안드로이드 플랫폼 개발 입문자를 위해서 안드로이드 플랫폼 소스를 직접 받는 방법을 정리한 것입니다.
안드로이드 플랫폼의 컴파일 환경은 리눅스이며, 아래에 설명된 소스를 받는 방법 또한 리눅스를 기준으로 설명합니다. cygwin 등을 통한 방법은 제가 해보질 않아서 가능한지는 잘 모르겠습니다.

Repo Client 설치하기

먼저 설치에 필요한 파일을 위한 디렉토리를 만들고, Path를 연결해줍니다.

$ mkdir ~/bin
$ PATH=~/bin:$PATH

소스를 받기 위한 Repo Client를 설치합니다.

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

curl: (7) couldn't connect to host

성공했다면 아무런 메시지가 나오지 않을 겁니다.
만약 위와 같이 에러메시지가 나온다면 프록시 서버 설정 때문이라고 볼 수 있습니다.
이런 경우, -x proxyip:port 를 앞쪽에 추가해서 다시 해보도록 하죠.

$ curl -x 10.244.254.254:8080 http://android.git.kernel.org/repo > ~/bin/repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 17451  100 17451    0     0  22288      0 --:--:-- --:--:-- --:--:-- 22287

위와 같이 다운로드 로그가 나온다면 성공입니다.

다운로드 받은 것은 쉘 스크립트로 된 Repo Client 입니다. 이 파일에게 실행권한을 주어야 사용할 수 있기 때문에, 아래와 같이 권한을 부여해줍니다.

$ chmod a+x ~/bin/repo
$ ls -l ~/bin
total 20
-rwxr-xr-x 1 chanywa chanywa 17451 2011-05-02 16:49 repo

여기까지 오셨으면 Repo Client 설치는 완료된 것입니다.

Repo Client 프록시 설정하기

이제 Repo Client를 이용해서 소스를 받아야 하는데, 앞에서 프록시 서버 설정을 해야했던 분만 작업하시면 됩니다. 해당없는 분은 그냥 넘어가세요.
이번에는 아까보다는 좀 복잡합니다.

$ cd ~/
$ curl -x 10.244.254.254:8080 http://www.agroman.net/corkscrew/corkscrew-2.0.tar.gz > corkscrew-2.0.tar.gz
$ tar zxvf corkscrew-2.0.tar.gz
$ cd corkscrew-2.0
$ ./configure
$ make
$ cp corkscrew ~/bin
$ vi ~/bin/git-proxy

여기까지 진행하셨으면 vi editor가 떴을 겁니다.
처음에는 문자입력이 안되므로, i 키를 한번 눌러주세요. 그리고 아래 내용을 입력하세요.

#!/bin/sh
exec ~/bin/corkscrew 10.244.254.254 8080 $*

물론 위의 IP가 아니라 해당 프록시 주소를 적으셔야 합니다.
그런 후에, <ESC>키를 누른 다음 콜론 키<:>를 누르면, 왼쪽 하단으로 프롬프트가 갈 겁니다. wq! 를 입력하시고 엔터를 누르시면 파일이 저장되고 vi 에디터는 종료됩니다.

그리고 앞에서 만든 git-proxy 파일에 대해서, 아래와 같이 추가 작업을 해줍니다.

$ git config --global core.gitproxy '/home/chanywa/bin/git-proxy'
$ chmod +x ~/bin/git-proxy

git config 문장에서의 경로는 '~' 기호없이 절대경로로 적어줘야하는 것 같습니다.
자~ 여기까지가 프록시 작업입니다.
프록시 설정이 필요없으신 분은 생략해도 되는 부분이겠지요.

Repo Client 설정하고 소스 받기

이제 소스를 받기 위해 Repo 초기화를 합니다.
아래와 같이 먼저 소스를 받을 디렉토리를 아무거나 만든 후에, repo init 을 합니다.

$ mkdir ~/work
$ cd ~/work
$ repo init -u git://android.git.kernel.org/platform/manifest.git -b gingerbread

만약 프로요 버전을 받고 싶으면 'gingerbread' 대신에 'froyo'를 입력하시면 됩니다.
그런데, 이런 에러가 뜨는 경우도 있습니다.

Traceback (most recent call last):
  File "/home/chanywa/bin/repo", line 91, in ?
    import readline
ImportError: No module named readline

파이썬 버전에 따라서 readline 모듈이 없는 경우도 있다고 하네요.
이런 경우에는 repo 파일의 91 번째줄을 주석처리하시면 됩니다.

$ vi ~/bin/repo

<:> 키를 누른 다음 91 을 적고 엔터를 누르시면 바로 91번째 줄로 이동합니다.
그런 다음 <i> 키를 누르시고, <#> 키를 누르면 '#' 글자가 삽입되고,
<ESC>, <:>, <w>, <q>, <!>, <ENTER>를 누르시면 완료됩니다.

다시 한번 repo init 을 시도하시면 될 겁니다.
정상으로 진행이 됐다면 이름과 메일주소, 색상설정 등을 확인합니다.

Your Name  [찬이]: chany
Your Email [chanywa@heoseng.(none)]: chany@chanywa.com
Your identity is: chany <chany@chanywa.com>
is this correct [y/n]? y
Testing colorized output (for 'repo diff', 'repo status'):
  black    red      green    yellow   blue     magenta   cyan     white
  bold     dim      ul       reverse
Enable color display in this user account (y/n)? y
repo initialized in /home/chanywa/work
$

와~ 드디어 소스를 다운로드 받는 순간입니다.
아래와 같이 간단한 명령 한 줄을 써줍니다.

$ repo sync

용량이 상당히 많기 때문에 다운로드 받는데 오래 걸립니다. 네트워크 상태에 따라서 몇시간 걸릴 수도 있어요.

포스트 작성시 참고한 자료

 

Posted by 찬이

댓글을 달아 주세요

  1. jackie 2012.03.26 15:18 신고  댓글주소  수정/삭제  댓글쓰기

    블로그 너무 잘 봤습니다.
    한가지 궁금한게 제가 지금 linux에 tomcat을 세팅을 끝내고 페이스북 app를 연동하려고 하는데요. 페이스북에 curl 을 날릴때 curl: (7) couldn't connect to host 메시지가 계속 뜨네요. 원래 curl은 설치 되어있고 따로 세팅하지 않아도 되는 걸로 알고 있거든요.. 위에 예제를 보면 -x proxyip:port 를 앞쪽에 추가하라고 했는데 프록시 설정을 어떻게 추가해야하는건지 자세히 좀 알려 주셨음 하네요.

    • BlogIcon 찬이 2012.04.01 01:19 신고  댓글주소  수정/삭제

      $ curl http://android.git.kernel.org/repo > ~/bin/repo 라는 예제의 바로 아랫부분이 그것입니다.
      $ curl -x 10.244.254.254:8080 http://android.git.kernel.org/repo > ~/bin/repo 라고 되어 있죠...?
      -x 옵션 뒤에 프록시 주소를 기재하면 됩니다.

  2. luckymy 2012.05.20 22:31 신고  댓글주소  수정/삭제  댓글쓰기

    자세한 설명 감사합니다.^^
    저도 91라인에 에러가 나서 주석처리한후 다시 실행했는데 이번에는
    gpg:error loading 'iconv.dll': 지정된 모듈을 찾을 수 없습니다.라고 나오네요 ㅜㅜ
    에러 마지막엔
    fatal: unable to start d:\만든폴더명\.repo\repo/main.py
    fatal:[Errno 8]Exec format error
    이라고 나오는데요.ㅠㅠ..
    이것도 마찬가지로 파이선이 구버전이라 그런건가요?

    • BlogIcon 찬이 2012.05.22 13:25 신고  댓글주소  수정/삭제

      리눅스 기준인데 경로를 d:\\ ... 로 하셨나요...?
      뭔가 좀 이상한데요

      그리고 일반적으로 한글명은 사용하지 않습니다.
      괜찮을 때도 있지만, 이러한게 문제가 되는 경우도 종종 있거든요.

      제가 이걸 옛날에 해봤던터라 파이선이 너무너무 구버전인게 아니라면 별 문제는 안될 듯 합니다