티스토리 뷰

Google에서는 안드로이드 소스 빌드 환경을 Ubuntu 10.04로 권장하고 있습니다. 이것을 알고 넘어갑시다!
(그럼에도 불구하고 맥에서 작업 환경을 구성하고 싶은 분들을 위해.... 제가 직접 시도하면서 겪은 문제들과 극복 방법을 포스팅합니다.) 

이 포스트는 http://source.android.com/source/ 문서를 바탕으로 재구성한 포스트입니다. 
 



준비물 : mac port, homebrew, 영어 개발자 문서를 볼 의지!!

1. 디스크 준비 - .dmg 생성!
기본적으로 맥에서는 대소문자 구별이 안됩니다. 이게 왜 문제가 되냐하면 나중에 안드로이드 소스를 다운 받고 나서 make로 빌드를 할 때 대소문자 구별이 되지 않아 빌드를 할 수 없다고 합니다. 따라서 대소문자 구별을 하는 파일 시스템을 가진 디스크를 만들어야 하는데요. 외장하드에 소스를 넣고 하시는 분들도 있지만 개인적으로는 디스크 이미지 파일을 만들어 마운트 한 뒤 거기서 작업을 하는 것을 추천합니다.

1)디스크 유틸리티를 실행하고
 

2)새로운 이미지 버튼을 클릭한 


 3) 스크린샷과 같이 설정을 하고(특히 포맷과 이미지 포맷 부분을 꼭 조심하세요!)

 

4) 디스크 이미지가 생성될 때 까지 기다립니다. (약간의 시간이 걸립니다.)
5) 만들어진 .dmg 디스크 이미지 파일을 더블클릭하여 마운트합니다. 이제 터미널에서도 이 파티션에 접근 할 수 있게 됩니다!


2. XCode 설치
XCode 패키지를 설치하면 부가적으로 여러가지 유틸리티들이 함께 설치됩니다. 특히 GCC 4.2 버전 이상이 필요합니다. (그리고 구글이 개발자 문서에서 설치하라고 시켰습니다.)
문서에 따르면 3.1.4 이상을 설치하는 것을 추천한다고 되어 있네요.
다만 XCode 4.x 버전을 설치할 시 문제가 발생할 수도 있다고 합니다.
따라서 XCode 3.1.4 이상의 버전을 찾아서 설치해야합니다.
일반적인 방법(애플 홈페이지 이용) - http://wonbear.egloos.com/5577195
토렌트 파일을 배포하는 블로그 포스트가 있네요 - http://ftsunny.tistory.com/13


3. MacPorts와 Homebrew 설치. & 부가적으로 필요한 패키지들 설치
MacPorts와 Homebrew는 쉽게 말해 여러 유틸리티를 손쉽게 설치할 수 있도록 도와주는 유틸리티입니다. 여러 유틸리티가 서로 상호보완 작용을 하는 경우가 있는데 이런 유틸리티들의 의존관계를 미리 파악해 특정 유틸리티를 설치할 때 함께 설치해야 할 유틸리티를 같이 설치해줍니다.
- 잠깐! 같은 기능을 하는 MacPorts와 Homebrew를 둘 다 설치하는 이유 -
MacPorts로 설치하면 안되고 Homebrew로 설치해야 하는 유틸리티가 가끔 등장합니다. 이럴 때 Homebrew를 이용하여 설치해주면 문제가 해결됩니다. 그리고 딱히 설치가 어렵지도 않고 용량도 크다고 느껴지진 않네요. 터미널로 명령어만 쳐놓으면 알아서 설치가 되므로 손쉽게 설치할 수 있습니다.
이것을 제가 모두 다룰 순 없으니 링크로 대신하겠습니다.
MacPorts 설치 - http://backlog.egloos.com/5080500
Homebrew 설치 - http://devday.tistory.com/entry/%EB%A7%A5-Mac%EC%9D%98-apt-get-Homebrew

MacPorts를 설치한 뒤 터미널에서
export PATH=/opt/local/bin:$PATH

이걸 입력해줍니다.

다음으로 기타 필요한 패키지들을 설치합니다.
$ POSIXLY_CORRECT=1 sudo port install gmake libsdl git-core gnupg
sudo 명령어이므로 비밀번호를 입력해야할 겁니다. 
이제 이 설치에서 시간이 오래 걸립니다.



4. make 버전 수정
make 3.8.2 버전에 버그가 있기 때문에 3.8.1 버전으로 수정해야 합니다.
/opt/local/etc/macports/sources.conf 이 파일을 수정해야 하는데요.
저 같은 경우에는 이걸 그냥 수정하면 -5000 에러가 나서, sudo를 이용하여 vim으로 이 파일을 열어 수정한 뒤 저장하였습니다. (아래 그림 참조. file:///Users/Shared/dports를 마지막 줄에 추가하였습니다.)

$ sudo vi /opt/local/etc/macports/sources.conf


vim으로 이 파일을 열고
 

마지막 줄에 file:///Users/Shared/dports 삽입! 그리고 :wq로 저장 후 종료!

그리고 /Users/Shared/dports 폴더를 만들어줍니다.

$ mkdir /Users/Shared/dports


그리고 이 폴더 안으로 이동하여 체크아웃을 해줍니다.

$ cd /Users/Shared/dports

$ svn co --revision 50980 http://svn.macports.org/repository/macports/trunk/dports/devel/gmake/ devel/gmake/

Checked out revision 50980.


마지막으로 gmake를 다운그레이드 합니다.

$ portindex /Users/Shared/dports

Creating port index in /Users/Shared/dports


$ sudo port install gmake @3.81

Password:

--->  Computing dependencies for gmake

--->  Cleaning gmake



5. 파일 IO 제한 수정
빌드 속도를 높이기 위해 동시 작업 한도 수를 올립니다. (이걸 하고 안 하고의 차이가 크더군요.)

$ vi ~/.bash_profile


그리고 마지막에 이 내용을 추가합니다.
# set the number of open files to be 1024
ulimit -S -n 1024
그럼 이런 내용이 됩니다.



6. 소스 다운로드
안드로이드 소스를 다운로드 하기 위해서 repo라는 일종의 툴을 제공하고 있습니다.
이 repo를 다운로드하고 초기화 한 뒤 sync 하면 안드로이드 소스들이 다운로드 됩니다.
이 글에서는 안드로이드 모든 버전 소스 다운로드를 하는 것으로 쓰겠습니다.
(source.android.com/source/downloading.html에서 특정 버전만 다운로드 받는 방법이 소개되어 있습니다.)

1) 작업 공간을 생성합니다.
$ mkdir ~/bin
$ PATH=~/bin:$PATH
2) repo 스크립트를 다운 받고 이것이 작동할 수 있도록 권한을 설정합니다.
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
3) 아까 생성한 디렉토리(repo 파일이 있는 곳. ~/bin 디렉토리를 추천)에서 소스를 다운로드할 곳을 생성합니다.
여기서부터 반드시 대소문자 구별 파티션이 필요합니다.
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
4) repo를 초기화하여 가장 최신의 안드로이드 소스를 다운받도록 합니다.
$ repo init -u https://android.googlesource.com/platform/manifest
5) 이제 소스를 다운로드 합시다! 시간이 매우매우매우 오래 걸리는 부분입니다. 주무시기 전에 하시는 것을 추천드릴 정도로요. 
$ repo sync
중간에 에러가 나는 경우가 있는데 이럴 때에는 다시 repo sync 명령어를 입력해주면 됩니다.

--별첨--
커널 소스도 다운로드가 가능합니다.
원하시는 곳에서 git으로 다운로드 하시면 됩니다.
$ git clone https://android.googlesource.com/kernel/common.git
$ git clone https://android.googlesource.com/kernel/goldfish.git
$ git clone https://android.googlesource.com/kernel/msm.git
$ git clone https://android.googlesource.com/kernel/omap.git
$ git clone https://android.googlesource.com/kernel/samsung.git
$ git clone https://android.googlesource.com/kernel/tegra.git


7. 빌드
 
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday