사용 OS : Ubuntu 12.04 64bit
아래 링크를 통해서 Virtualbox에 ubuntu 설치하기를 따라하실 수 있습니다.
Virtualbox Ubuntu 12.04 설치하기 : http://thdev.net/237
가상 머신 환경 : 2 GB 메모리, 40 GB 이상의 디스크 공간 정도면 충분한것 같습니다. 메모리는 꼭 2 GB 이상이면 좋습니다. make 시에 상당한 메모리를 사용하고 1 GB로 진행하였을 경우 메모리 부족 오류가 발생하였습니다.
JDK : JDK 1.6(진저브레드 이상은 JDK 1.6을 요구하고, 프로요 이하는 JDK 1.5를 요구합니다.)
Git : 1.7
Python : 2.6
GNU Make : 3.81
GCC의 경우 ubuntu 12.04를 설치하면 4.6 버전이 설치되어 있습니다.
[빌드 환경 구성]
빌드 환경 구성으로 AOSP 홈페이지에 설명되어 있는 프로그램을 다운 받아 설치하면 됩니다. 설치 중에 이미 설치되어 있거나, 약간 다른이름이 존재할 수 있습니다. 아래가 1줄의 명령어이지만 1개씩 설치하는걸 추천합니다.
빌드 환경 구성 : http://source.android.com/source/initializing.html
[Java 설치]
Java의 경우 AOSP 홈페이지의 설명으로는 설치가 불가능합니다. Ubuntu에서 기본 패키지에서 빠져서 아래와 같이 설치해야합니다. 그리고 오픈 JDK로는 안드로이드 빌드가 되지 않습니다.
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java6-installer
만약 java가 6, 7이 두개가 설치되어 있는 경우가 있을 수 있습니다. 아래 명령어를 통해서 java 6으로 변경하시면 됩니다.
sudo update-alternatives --config java
를 실행하시고, java 6 버전으의 숫자를 입력하시면 됩니다.
출처 : http://askubuntu.com/questions/272187/setting-jdk-7-as-default
[빌드용 프로그램 설치]
빌드에 필요한 프로그램은 아래와 같습니다. 상당히 많이 존재하는데 가능하다면 1개씩 설치하시길 권장드립니다. 이미 설치되어 있으면 아래 명령어가 안먹히는 경우가 있습니다.
$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
libxml2-utils xsltproc
- android site Ubuntu 12.04
$ sudo apt-get install git gnupg flex bison gperf build-essential \
zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
libgl1-mesa-dev g++-multilib mingw32 tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
- 1개씩 설치하는 경우
sudo apt-get install git-core
sudo apt-get install gnupg
sudo apt-get install flex
sudo apt-get install bison
sudo apt-get install gperf
sudo apt-get install build-essential
sudo apt-get install zip
sudo apt-get install curl
sudo apt-get install zlib1g-dev
sudo apt-get install libc6-dev
sudo apt-get install libncurses5-dev:i386
sudo apt-get install ia32-libs
sudo apt-get install x11proto-core-dev
sudo apt-get install libx11-dev
sudo apt-get install lib32readline5-dev
sudo apt-get install lib32z-dev
sudo apt-get install libgl1-mesa-dev
sudo apt-get install g++-multilib
sudo apt-get install mingw32
sudo apt-get install tofrodos
sudo apt-get install python-markdown
sudo apt-get install libxml2-utils
sudo apt-get install xsltproc
## build error시 체크 패키지.
http://askubuntu.com/questions/256487/initialising-the-build-environment-for-android-on-64-bit-12-04
sudo apt-get install zlib1g-dev:i386
sudo apt-get install libx11-dev:i386
sudo apt-get install libreadline6-dev:i386
sudo apt-get install libgl1-mesa-glx-lts-quantal:i386
[Java Path 등록]
아래와 같이 Java Path를 등록해야 합니다. JAVA_HOME의 경로는 아래와 같은 경로가 아닐 수 있으니 직접 경로를 확인하신 다음 등록하시기 바랍니다.
vi ~/.bashrc에 등록한다.
# Java Setting
export JAVA_HOME=/usr/lib/jvm/java-6-oracle
export ANDROID_JAVA_HOME=$JAVA_HOME
안드로이드 소스코드 다운로드 방법 : http://source.android.com/source/downloading.html
아래 링크를 통해 안드로이드 버전과 기기 정보를 확인하신 후 다운로드 주소가 변경될 수 있습니다.
안드로이드 버전 확인 : http://source.android.com/source/build-numbers.html
[Installing Repo 설정]
repo를 등록할 임시 폴더를 생성합니다. 저는 ~/ 아래에 bin 폴더를 생성하였습니다. mkdir ~/bin 명령으로 bin 폴더를 생성하고, PATH 등록하였습니다. 여기서 PATH를 등록하지 않으시면 풀 소스 다운로드시에 진행이되지 않습니다. 진행 중에 경로를 찾지 못한다는 오류가 난다면 여기의 PATH 등록이 되지 않은것이므로 PATH 등록을 다시해주시면 됩니다.
1. bin 폴더 생성
$ mkdir ~/bin
$ PATH=~/bin:$PATH
[Repo 등록]
안드로이드를 다운받을 repo를 등록하고 권한을 a+x 권한을 주면 됩니다. 바로위에서 생성한 ~/bin/ 아래 repo라는 폴더를 생성하여 repo 등록을 진행합니다.
$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
[Android를 다운 받을 폴더 생성]
안드로이드를 다운 받을 폴더를 생성합니다. 이 폴더는 안드로이드 전체 소스코드가 다운 받아져야하는 폴더로 bin 폴더가 있는 곳에 아래와 같이 생성하셔도 됩니다. 아니면 원하시는 경로 상관 없이 생성하시면 됩니다.(Ubuntu이니 ~/ 폴더 아래가 좋습니다. / 폴더는 관리자 권한을 필요로 하니 피하는게 좋습니다.)
저는 ~/temp 폴더를 생성하였습니다.
$ mkdir temp
$ cd temp
안드로이드 소스 다운로드
이제 모든 설정이 끝났습니다. 안드로이드 Full Source를 다운 받으실 수 있는 환경이 구성되었습니다. repo init 명령어를 통해서 어느 주소에서 안드로이드 소스를 받을지를 지정하면 됩니다. 이후 sync 명령어를 통해서 소스를 다운 받으면 됩니다.
여기서 중요한 init 명령어를 살펴보겠습니다.
안드로이드 버전 확인 : http://source.android.com/source/build-numbers.html 에서 확인하고, 내가 필요로하는 Source를 다운 받을 수 있습니다. init 명령어를 아래와 같이 2가지로 사용할 수 있습니다.
옵션의 -b를 지정하면 특정 소스코드를 다운 받게되고, -b를 지정하지 않으면 기본 소스코드를 다운 받습니다. 최신 버전을 받으실 것이라면 -b 옵션을 사용하시고, 안드로이드 버전 확인 페이지에서 버전 확인 후 진행하시면 됩니다. 현재 가장 최신은 android-4.4.2_r1 버전으로 Nexus 4, 5, 7, 10용입니다.
repo init -u https://android.googlesource.com/platform/manifest
또는
repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
repo sync를 진행합니다. 진행하는 방법은 2가지입니다. -j 옵션을 지정하면 다중 다운로드가 됩니다. 다중 다운로드를 진행하므로 다운로드 속도는 그냥 sync 보다 빠릅니다. 그만큼 메모리를 많이 차지하니.. 적당한 옵션을 지정하여 사용하시면 됩니다.
repo sync
또는
repo sync -j3
Android 4.4.2 빌드
안드로이드 4.4.2 빌드를 하기 위한 환경이 모두 끝났습니다. repo sync를 통해서 다운 받은 소스코드를 확인하실 수 있습니다. 다운 받은 소스코드를 make 명령어를 통해서 빌드할 수 있지만.. 4.4.2에는 GCM이 비어있어서 오류가 발생하더군요. GCM을 다운 받고 복사한 후에 make를 진행하도록 하겠습니다.
GCM 다운로드 및 폴더 생성
GCM 다운로드는 :http://stackoverflow.com/questions/16385927/building-aosp-4-2-2-on-ubuntu-12-10-x64-fail 을 참고하여 작성하였습니다.
GCM 코드는 안드로이드 Full source에 포함되어 있지 않습니다. 더군다나 폴더가 vendor 아래에 포함되어 있더군요. 그래서 아래와 같이 GCM 소스코드 다운로드 방법을 함께 추가하였습니다.
GCM 소스 다운로드 : https://code.google.com/p/gcm/source/checkout
다운 받은 안드로이드 temp 폴더에서 아래 명령어를 입력합니다. vendor/unbundled_google/libs 폴더를 생성하고 이동합니다.
$ mkdir -p vendor/unbundled_google/libs
$ cd vendor/unbundled_google/libs
libs 폴더에서 아래 명령을 이용해 gcm 소스코드를 다운 받습니다.
git clone https://code.google.com/p/gcm/
Android 명령셋 등록
안드로이드에서 제공하는 명령셋을 등록합니다. 추후 mm 등의 명령어를 사용할 때 필요로 합니다.
$ source build/envsetup.sh
또는
$ . build/envsetup.sh
make
최종적으로 make를 진행할 수 있는 환경이 만들어졌습니다. 이번글에서는 make까지 진행하는 작업을 하므로 아래와 같이 마지막 명령어를 진행합니다.
역시 repo sync 명령어와 마찬가지로 -j 옵션을 통해서 추가 쓰레드를 진행할 수 있습니다. 가상 머신을 기본값으로 하셨다면 -j3이 적당해보입니다. 기본적으로 자신의 CPU Thread 수만큼 지정해주시는게 가장 좋은 성능을 보입니다.
적당한 멀티 쓰레드 수는 Cores(실제 코어) * 1.1 을 해주는 값이 적당하다고 합니다. i7의 경우는 실제 코어가 4개이니 4 * 1.1의 4 또는 5가 적당하고 i5는 2 * 1.1 = 3 또는 2가 적당한값 같습니다.
$ make
또는
$ make -j3
[Eclipse]Eclipse 자주 쓰는 단축키 (0) | 2014.10.08 |
---|---|
Cross-Cable을 이용한 직접 연결 (0) | 2014.08.03 |
툴체인(Tool-Chain) 설치 (0) | 2014.07.13 |
안드로이드 소스 컴파일 (ubuntu 11.04 + android gingerbread) (0) | 2013.03.17 |
Ubuntu 11.04 에서 jdk6 설치 (0) | 2013.03.17 |
댓글 영역